遅い集計を最適化するには、まず結果が何を意味し、どの処理に時間がかかるかを明らかにします。集計は行をまとめて、加盟店別売上などの結果を作る処理です。コストは読み取って組み合わせるデータ量に左右されます。
先月の売上を表示するダッシュボードを例に、クエリを改善するか、集計済みの結果を保存するか、レポート処理を別の場所に移すかを判断します。
1. 高速化する前に結果の正しさを確認する
売上が支払い済み注文と作成済み注文のどちらを指すか、返金をどう扱うか、対象通貨は何かを明確にします。ダッシュボードに必要な鮮度も確認します。これらによって、クエリも利用できる最適化も変わります。
よくある誤りは、支払いを複数の注文明細と結合してから、支払い金額を合計することです。
[Payment: 100] -> [Join with 3 items] -> [100, 100, 100]
|
[SUM = 300]
