• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:効率的なインデックスのつけ方は?)

効率的なインデックスのつけ方は?

このQ&Aのポイント
  • MYSQLでのインデックスのつけ方をご教授して頂けますでしょうか?データ数とかその他もろもろにもよるかと思いますが、一般的に考えてってことでよろしくお願いいたします。
  • テーブル定義がある場合、すべての検索条件に対してどのINDEXを作成するのがベターなのでしょうか?
  • 検索条件としては、(C1)、(C2)、(C3)、(C4)、(C1,C2)、(C1,C3)、(C1,C4)、(C2,C3)、(C2,C4)、(C3,C4)、(C1,C2,C3)、(C1,C2,C4)、(C1,C3,C4)、(C2,C3,C4)、(C1,C2,C3,C4)と言うような、すべての場合の条件があるとします。それぞれの検索条件の頻度は同程度とします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

まだ情報が不足してます。 ・c3、c4はカーディナリティ低いのとのことですが、単独で有効な索引検索 ができるのか ・他のカラムとの組み合わせで索引検索が有効になるカーディナリティを 実現できるか。(c3,c4で索引を張った時など) ・このテーブルの更新頻度 もし、更新頻度が高く、c4単独でもそれなりに有効な索引検索ができるな ら、(c1),(c2),(c3),(c4)の4つの索引を単独でつくり更新負荷を下げる ことが必要かもしれません。 逆にカーディナリティが低いなら(c1),(c2),(c3),(c4)の4つのビットマッ プ索引をつくり、検索時にマージして実行することも選択肢の一つだと 考えます。 中間的には、検索の頻度と有効度を勘案して複合索引つくるというもので すね。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

それぞれの項目のカーディナリティは?(複合インデックスでも) それがわからないと答えようがないのでは。

bakenshibakenshi
質問者

補足

nora1962様、ご指摘有難う御座います。 前提条件が抜けておりました。 まだ不足条件等ありましたら、ご指摘ください。 カーディナリティは C1 > C2 > C3 > C4 の順に高いこととします。 よろしくお願いいたします。

関連するQ&A