マルチカラムインデックスの可否について

複数の列の組み合わせをインデックスのキーにすることはできますか?
ある表に定義されている複数の列の組み合わせを、インデックスのキーに指定することができます。これをマルチカラムインデックスと呼びます。

マルチカラムインデックスは、定義する列の順序に意味があります。列aと列bを組み合わせて、(a,b)という順のマルチカラムインデックスを定義したとします。このインデックスを使って検索を行う場合、まず列aの値でデータを絞り込んでから、列bの値で絞り込んでいきます。そのため、(a,b)という組み合わせのマルチカラムインデックスを使って、検索条件に列bだけを指定した検索は行うことはできません。逆に、列aだけを検索条件に指定した検索はできます。
マルチカラムインデックスを定義しているとき、検索処理でこのインデックスが使われるかどうかについて、以下にいくつかの例を示します。

3つの列a、b、cの組み合わせとして、(a,b,c)というマルチカラムインデックスを定義しているとします。

  • マルチカラムインデックスの先頭の列だけを使用する場合

     検索条件:WHERE a = 10

    この場合はインデックスが使用されます。


  • マルチカラムインデックスの先頭以外の列を使用する場合

     検索条件:WHERE b = 10 AND c = 2

    列の組み合わせの先頭である列aが検索条件に指定されていないため、この検索条件ではインデックスは使用されません。


  • マルチカラムインデックスの不連続の列を使用する場合

     検索条件:WHERE a = 10 AND c = 2

    マルチカラムインデックスの一部だけが使用されます。
    「a=10」の条件に合致するデータを抽出する段階では、インデックスが使用されます。
    「c=2」の条件の検索にはインデックスは使用されません。
    これはマルチカラムインデックスのキーの組み合わせで列cより前に定義されている列bについての条件が、検索条件に指定されていないためです。


  • マルチカラムインデックスのすべてを順不同に使用する場合

     検索条件:WHERE b = 10 AND c = 2 AND a = 5

    この場合はインデックスが使用されます。
    マルチカラムインデックスのキーの組み合わせの定義順番と、検索条件に記述する順番は異なっていますが、インデックスが使用されるかどうかとは無関係です。

製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 技術サポート
このページの先頭へ