2

我有一个这样的架构:

-record(sale, {
  id,
  price,
  tax,
  sku,
  datetime
})

-record(refund, {
  id,
  sale_id,
  datetime
})

表中有大约 600,000 条记录,sale表中有大约 20,000条记录refund

我需要折叠销售表中的数据,将每个数据sku与收到的金额(price)和退款金额(通过检查#refund.sale_id)分组。

有没有一种有效的方法可以使用 Mnesia 来避免 N+1 查询问题,对于sale折叠操作中的每个,我需要再次调用 mnesia 以查看是否存在退款?某种方式做一个幼稚的加入?

4

1 回答 1

2

是你的sale桌子ordered_set吗?如果是,您可以像往常一样进行合并连接。首先获取所有refund并按sale_id. 然后只需折叠sale并按键累积到 dict 或 ets 中sku

于 2013-04-18T06:15:24.603 回答