sql >> データベース >  >> RDS >> Sqlserver

インデックスの列の順序はどのくらい重要ですか?

    次のようなインデックスを見てください:

    Cols
      1   2   3
    -------------
    |   | 1 |   |
    | A |---|   |
    |   | 2 |   |
    |---|---|   |
    |   |   |   |
    |   | 1 | 9 |
    | B |   |   |
    |   |---|   |
    |   | 2 |   |
    |   |---|   |
    |   | 3 |   |
    |---|---|   |
    

    最初の列が最初に2番目の列を制限するよりも多くの結果を排除するため、最初にAを制限する方法をご覧ください。 1列目、2列目など、インデックスをどのようにトラバースする必要があるかを想像すると、簡単です。最初のパスでほとんどの結果を削除すると、2番目のステップがはるかに高速になることがわかります。

    別のケースでは、列3でクエリを実行した場合、オプティマイザーはインデックスを使用しません。これは、結果セットを絞り込むのにまったく役立たないためです。 クエリを実行しているときはいつでも、次のステップの前に処理する結果の数を絞り込むと、パフォーマンスが向上します。

    インデックスもこの方法で保存されるため、クエリを実行しているときに最初の列を見つけるためにインデックス全体をバックトラックする必要はありません。

    要するに:いいえ、それはショーのためではなく、実際のパフォーマンス上の利点があります。



    1. AndroidでのSQLite拡張クエリ構文

    2. MariaDB ROUND()とTRUNCATE()

    3. プロシージャ内で別のPL/SQLプロシージャを呼び出す

    4. クエリ文字列にもかかわらず、SQLCOUNTを使用すると-1を返すExecuteNonQuery