优化慢聚合查询前,先确认结果代表什么,以及哪一步消耗时间。聚合将多行合成摘要,例如每个商户的收入。成本取决于需要读取和合并多少数据。
以展示上个月收入的仪表盘为例,判断应该优化查询、保存预计算摘要,还是将报表迁移到其他系统。
1. 先保证结果正确,再提升速度
明确收入按已支付订单还是已创建订单计算,退款如何处理,包括哪些币种。也要确认仪表盘需要多及时。这些决定会改变查询及可用的优化方式。
常见错误是把一笔付款关联到多条订单明细后,再对付款金额求和:
[Payment: 100] -> [Join with 3 items] -> [100, 100, 100]
|
[SUM = 300]
