mnesia - 在 table 创建后在字段上创建索引
mnesia - creating index on a field after the table is created
我使用
创建了一个table
mafiapp_friends = [aaa, expertise, xxx, yyy]
注意expertise
在记录
中的位置2
mnesia:create_table(mafiapp_friends,
[{attributes, record_info(fields, mafiapp_friends)},
{disc_copies, Nodes}]).
我忘了在里面加索引语句
{index, [#mafiapp_friends.expertise]},
现在我需要创建这个索引。但是我不想删除 table 并重新创建 table,因为我在其中有数据。
我执行了以下语句:
mnesia:add_table_index(mafiapp_friends, expertise)
然后我做了
mnesia:schema(mafiapp_friends).
在我看到的输出中,
index -> [3]
{index,3} -> {mafiapp_friends,index,3}
你能告诉我这里的 [3] 是什么意思吗?
因此,3 是索引字段在 table 中的位置,即
#mafiapp_friends.expertise
看例子:
2> rd(mafiapp_friends, {aaa, expertise, xxx, yyy}).
mafiapp_friends
3> #mafiapp_friends.expertise.
3
4> record_info(fields, mafiapp_friends).
[aaa,expertise,xxx,yyy]
5>
注意 erlang 中的记录只是第一个元素是记录名称的元组,这就是为什么索引乍一看有点奇怪
5> X = #mafiapp_friends{expertise = hello}.
#mafiapp_friends{aaa = undefined,expertise = hello,
xxx = undefined,yyy = undefined}
6> element(3, X).
hello
7>
我使用
创建了一个tablemafiapp_friends = [aaa, expertise, xxx, yyy]
注意expertise
在记录
mnesia:create_table(mafiapp_friends,
[{attributes, record_info(fields, mafiapp_friends)},
{disc_copies, Nodes}]).
我忘了在里面加索引语句
{index, [#mafiapp_friends.expertise]},
现在我需要创建这个索引。但是我不想删除 table 并重新创建 table,因为我在其中有数据。
我执行了以下语句:
mnesia:add_table_index(mafiapp_friends, expertise)
然后我做了
mnesia:schema(mafiapp_friends).
在我看到的输出中,
index -> [3]
{index,3} -> {mafiapp_friends,index,3}
你能告诉我这里的 [3] 是什么意思吗?
因此,3 是索引字段在 table 中的位置,即
#mafiapp_friends.expertise
看例子:
2> rd(mafiapp_friends, {aaa, expertise, xxx, yyy}).
mafiapp_friends
3> #mafiapp_friends.expertise.
3
4> record_info(fields, mafiapp_friends).
[aaa,expertise,xxx,yyy]
5>
注意 erlang 中的记录只是第一个元素是记录名称的元组,这就是为什么索引乍一看有点奇怪
5> X = #mafiapp_friends{expertise = hello}.
#mafiapp_friends{aaa = undefined,expertise = hello,
xxx = undefined,yyy = undefined}
6> element(3, X).
hello
7>