为什么我的mnesia指数处于这个位置?

时间:2017-02-27 04:28:31

标签: erlang elixir mnesia

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是基于而不是零,还是在这里发挥作用呢?

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值创建的索引。