問題のテーブルは、ロールアップ/集計テーブルでした。
それはそれでいいだけでなく、「正しい」。
また、で始まるので、概要テーブルのような匂いがしday
ます。
セカンダリインデックスはありますか?InnoDBを使用している場合、残りのPRIMARY KEY列はセカンダリインデックスの最後に追加されることに注意してください。繰り返しますが、これは必ずしも問題ではありません。
ロールアップには1億行が多くなります。テーブルが細かすぎるようです。つまり、おそらく(date、a、b、c、d)の場合、(date、a、b、c)、(date、b、c、d)、(date、c、 d、a)、(date、d、a、b)(またはいくつかの適切な組み合わせ)。それを行うと、各行は10M行だけになる可能性があり、それによりレポートをさらに高速化すると同時に、レポートの柔軟性もほぼ同じになります。
または、(week、a、b、c、d)に切り替えて、1400万行だけになる場合があります。(おそらくもっと。)
パーティションを使用したプルーニングの促進 --- 高速取り込み --- データウェアハウスのヒント --- 要約表。これらは、私がいくつかのDWプロジェクトで開発したテクニックの多くを要約しています。推測できるように、各プロジェクトは異なります。(私の経験では)サマリーテーブルの「典型的な」数は3〜7です。要約のターゲットは、10行のファクト行-> 1行の要約行です。(それは「中央値」かもしれません。)まれなケースでは、要約表を要約しました。別のまれなケースでは、私は効果的な要約表を分割しました。通常、サマリーテーブルは十分に小さいため、UIから直接アクセスするのに十分高速です。