web-dev-qa-db-ja.com

SQL Server-クラスター化インデックスと非クラスター化インデックスを使用する場合

クラスタ化インデックスと非クラスタ化インデックスの主な違いを知っており、それらが実際にどのように機能するかを理解しています。クラスター化インデックスと非クラスター化インデックスが読み取りパフォーマンスを改善する方法を理解しています。しかし、私が確信していないことの1つは、私が一方をもう一方よりも選択する理由が何であるかということです。

例:テーブルにクラスター化インデックスがない場合、非クラスター化インデックスを作成し、実行するメリット

98
armulator

警告の言葉を入れたいだけです。お願い非常に慎重にクラスター化インデックスを選んでください!すべての「通常の」データテーブルにはクラスター化インデックスが必要です。クラスター化インデックスを作成すると、実際に多くの操作が高速化されるためです。はい、speed up、挿入と削除ですら!ただし、goodクラスタ化インデックスを選択した場合のみ。

これは、SQL Serverデータベースのmost replicatedデータ構造です。クラスタリングキーも、テーブル上のすべての非クラスター化インデックスの一部になります。

クラスタリングキーを選択するときは、細心の注意を払う必要があります。

  • narrow(4バイトが理想的)

  • nique(結局「行ポインタ」です。これを一意にしないと、SQL Serverはバックグラウンドでそれを実行します。各エントリに数バイトを掛けて、行とあなたが持っている非クラスター化インデックスの数-これは非常に高価になる可能性があります!)

  • static(変更しない-可能であれば)

  • 理想的にはever-increasingなので、ひどいインデックスの断片化に陥ることはありません(GUIDは、適切なクラスタリングキーの反対です-その特定の理由のため)

  • null不可であり、理想的には固定幅である必要があります-varchar(250)は非常に貧弱なクラスタリングキーになります

それ以外の点は、これらのポイントの背後にある重要度の2番目と3番目のレベルでなければなりません。

Kimberly Trippの(The Index of Indexing)ブログ投稿のいくつかを参照してください-彼女が彼女のブログに書いたものは絶対に貴重です-それを読んで、それを消化してください-それによって生きてください!

116
marc_s