按值Erlang/Mnesia获取记录

按值Erlang/Mnesia获取记录,erlang,mnesia,Erlang,Mnesia,如何以更有效的方式按值获取记录 目前我正在这样做: Coupon = [P || P <- kvs:all(company_coupon), P#company_coupon.company_id == C#company.id], 我的问题是针对kvs的:所有。。。。在数据库中,首先获取所有条目,然后进行匹配通常是非常昂贵的 有更好的办法吗 PS:list:keyfind还需要首先提供所有记录,然后在循环中运行它们 你们是怎么做到的 干杯 如果之前已将字段设置为键,则可以使用kvs:i

如何以更有效的方式按值获取记录

目前我正在这样做:

Coupon = [P || P <- kvs:all(company_coupon), P#company_coupon.company_id == C#company.id],
我的问题是针对kvs的:所有。。。。在数据库中,首先获取所有条目,然后进行匹配通常是非常昂贵的

有更好的办法吗

PS:list:keyfind还需要首先提供所有记录,然后在循环中运行它们

你们是怎么做到的


干杯

如果之前已将字段设置为键,则可以使用kvs:indextable、field、value:

#table{name=user,fields=record_info(fields,user), keys = [field]}

当您使用诸如erlang或lisp之类的函数式语言时,在大多数情况下遍历数据是不可避免的,而sql不需要它。因此,如果您将数据存储在支持sql的数据库(如postgres)中,则最好使用sql,但如果您不需要保存数据,则使用正确的方法。

我看不出sql与函数式编程语言有何关联。您可以使用任何流行的函数式语言进行SQL查询。