Mnesia折叠记录,引用第二个表格

时间:2013-04-18 03:07:18

标签: erlang mnesia

我有一个这样的架构:

-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以查看是否存在退款?做一个天真的连接的一些方法?

1 个答案:

答案 0 :(得分:2)

您的saleordered_set?如果是,您可以像往常一样进行合并加入。首先获取所有refund并按sale_id对其进行排序。然后折叠sale并通过sku键累积到dict或ets中。