我正在尝试从碎片化的 mnesia 表中读取,该表在不久的将来可能会保存大量记录。这些读取也可能通过表的主键以外的其他键进行。
这两个选项哪个更有效?查询列表理解,或 mnesia 索引读取?
最佳答案
那么,索引将需要更多的磁盘空间。对于每个表片段,mnesia 会创建一个单独的索引文件。但是,从经验来看,索引读取效率更高。
QLC 会在运行时消耗更多内存,尤其是当查询结果非常多时。这将要求您使用查询游标。我建议您使用索引读取。索引读取对 RAM 来说根本不昂贵,因为它是正常读取,尽管 mnesia 必须先查阅索引文件。当涉及到批量处理复杂的表关系和返回值的评估时,QLC 非常有用。但是,当结果太多时,它会引入处理成本和内存。请注意,QLC 使用 mnesia:select/1,2 和 4(具体哪个,我不确定),但我知道 select 是一种操作,它使 mnesia 在 serach 中遍历整个表以获取记录。
Mnesia 索引读取优于查询列表理解
关于erlang - 哪个对 RAM、查询列表理解或 mnesia index_read 更昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730302/