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是基于而不是零,还是在这里发挥作用呢?
答案 0 :(得分:4)
Mnesia表包含具有类似记录格式的元组。在您的示例中,存储在:users
表中的元组类似于:
{: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
值创建的索引。