为什么我的失忆指数在这个位置?

Why is my mnesia index in this position?

iex(6)> :mnesia.table_info(:users, :attributes)
[:id, :email, :foo, :inserted_at, :updated_at]

iex(7)> :mnesia.table_info(:users, :index)     
[3]

iex(8)> :mnesia.add_table_index(:users, :email)
{:aborted, {:already_exists, :users, 3}}

我知道 Tab 是第一个索引,但为什么索引不是 2 而不是 3?索引是基于 1 而不是零,还是这里有其他原因?

Mnesia tables 包含具有类似记录格式的元组。在您的示例中,存储在 :users table 中的元组看起来像:

{:users, 1, "f@b.com", "foo", {2016, 12, 24}, {2016, 12, 31}}

映射到:

Index |   1    |   2   |   3    |  4   |      5       |     6       |
Name  | :users |  :id  | :email | :foo | :inserted_at | :updated_at |

由于元组是基于 1 的,因此将为 :email 值创建的索引将在元组的位置 3 上创建。