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

複数のインデックスと複数列のインデックス

    CadeRouxに同意します。

    この記事はあなたを正しい軌道に乗せるはずです:

    • SQL Server 2005/2008のインデックス–ベストプラクティス、パート1
    • SQL Server 2005/2008のインデックス–パート2 –内部

    クラスター化インデックスには、最初の列として一意のキー(ID列をお勧めします)が必要です。基本的に、データをインデックスの最後に挿入するのに役立ち、ディスクIOやページ分割が多く発生することはありません。

    次に、データに他のインデックスを作成していて、それらが巧妙に作成されている場合は、それらが再利用されます。

    例えば3列のテーブルを検索するとします

    州、郡、郵便番号。

    • 州のみで検索する場合があります。
    • 州や郡で検索することもあります。
    • 州、郡、郵便番号で頻繁に検索します。

    次に、州、郡、zipのインデックス。これら3つの検索すべてで使用されます。

    zipだけでかなり多く検索する場合、zipはそのインデックスの3番目の部分であり、クエリオプティマイザーはそのインデックスを役に立たないと見なすため、上記のインデックスは(とにかくSQL Serverによって)使用されません。

    次に、このインスタンスで使用されるZipのみでインデックスを作成できます。

    ちなみに、複数列のインデックス作成では、最初のインデックス列が常に検索に使用でき、「状態」のみで検索する場合は効率的ですが、「状態」の単一列インデックスほど効率的ではないという事実を利用できます。 '

    あなたが探している答えは、頻繁に使用するクエリのwhere句とgroupby'sに依存するということだと思います。

    この記事は大いに役立ちます。 :-)



    1. MySQLでの大文字と小文字を区別する照合

    2. Oracle12.2シャーディング

    3. MySQLのROW_NUMBER()

    4. 列の順序が考慮されていない(設定されている)一意のインデックスを作成する方法