- ベストアンサー
※ 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)と言うような、すべての場合の条件があるとします。それぞれの検索条件の頻度は同程度とします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まだ情報が不足してます。 ・c3、c4はカーディナリティ低いのとのことですが、単独で有効な索引検索 ができるのか ・他のカラムとの組み合わせで索引検索が有効になるカーディナリティを 実現できるか。(c3,c4で索引を張った時など) ・このテーブルの更新頻度 もし、更新頻度が高く、c4単独でもそれなりに有効な索引検索ができるな ら、(c1),(c2),(c3),(c4)の4つの索引を単独でつくり更新負荷を下げる ことが必要かもしれません。 逆にカーディナリティが低いなら(c1),(c2),(c3),(c4)の4つのビットマッ プ索引をつくり、検索時にマージして実行することも選択肢の一つだと 考えます。 中間的には、検索の頻度と有効度を勘案して複合索引つくるというもので すね。
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
回答No.1
それぞれの項目のカーディナリティは?(複合インデックスでも) それがわからないと答えようがないのでは。
補足
nora1962様、ご指摘有難う御座います。 前提条件が抜けておりました。 まだ不足条件等ありましたら、ご指摘ください。 カーディナリティは C1 > C2 > C3 > C4 の順に高いこととします。 よろしくお願いいたします。