我有一个这样的架构:
-record(sale, {
id,
price,
tax,
sku,
datetime
})
-record(refund, {
id,
sale_id,
datetime
})
sale
表中约有600,000条记录,refund
表中约有20,000条记录。
我需要折叠销售表中的数据,将每个sku
与收到的金额(price
)和退款金额(通过核对#refund.sale_id
)分组。
有没有一种有效的方法可以使用Mnesia来避免N + 1查询问题,对于折叠操作中的每个sale
,我需要再次调用mnesia以查看是否存在退款?做一个天真的连接的一些方法?
答案 0 :(得分:2)
您的sale
表ordered_set
?如果是,您可以像往常一样进行合并加入。首先获取所有refund
并按sale_id
对其进行排序。然后折叠sale
并通过sku
键累积到dict或ets中。