我有一个记录该记录的记忆表。
-record(peer, {
peer_key, %% key is the tuple {FileId, PeerId}
last_seen,
last_event,
uploaded = 0,
downloaded = 0,
left = 0,
ip_port,
key
}).
Peer_key 是一个元组 {FileId, ClientId},现在我需要从具有特定 FileId 的所有对等点中提取 ip_port 字段。
我想出了一个可行的解决方案,但我不确定这是否是一个好方法:
qlc:q([IpPort || #peer{peer_key={FileId,_}, ip_port=IpPort} <- mnesia:table(peer), FileId=:=RequiredFileId])
Thanks.
在ordered_set表类型上使用带有元组主键(如{FileId,PeerId}),然后部分绑定元组的前缀(如{RequiredFileId,_})将非常有效,因为只会检查具有该前缀的键的范围,而不是全表扫描。您可以使用 qlc:info/1 检查查询计划并确保正在发生的任何选择都绑定键前缀。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)