2

データ処理に使用するルックアップ テーブルを作成しています。構造はかなり単純です。

最初のフィールドは、主キーとクラスター化インデックスになります。項目タイプを追跡する 2 番目のフィールドがあります。

一部の (ただしすべてではない) クエリがそのフィールドを検索するため、その 2 番目のフィールドにインデックスが必要です。これらのクエリでは、主キーの値も取得する必要があります。

非クラスター化インデックスを利用するクエリで、テーブルに移動して主キーの値を取得する必要がないようにしたいと考えています。

したがって、私の質問は、通常の SQL Server インデックスに主キー値があるのか​​、それともクラスター化インデックスへのポインターがあるだけなのかということです (ここでの目的のために、主キーとクラスター化インデックスが同範囲であると想定しています)。ディスクへのポインタのみが含まれ、主キーの値が含まれていない場合、最初の列 (主キー) を 2 番目の列に基づく通常のインデックスのインクルード列にすることを考えていました。

4

3 に答える 3

7

のドキュメントを引用するにはCREATE INDEX

テーブルにクラスター化インデックスが定義されている場合、非クラスター化インデックスには常にクラスター化インデックス列が含まれます。

于 2012-09-27T16:00:29.063 に答える
3

必ずしもPK列が含まれている必要はありませんが、クラスター化インデックスのキー列が含まれています。これらは実際にCI行へのポインターとして使用されますが、他のタイプのクエリでも使用できます。

たとえば、列Aのインデックス(明示的にIDではない)はクエリを満たすことができますselect A, ID from T

于 2012-09-27T15:58:02.527 に答える
1

インデックスのキー値によって、データの順序が確立されます。データ自体が順序付けられるように、データはインデックスとともに格納されます。クラスター化インデックスでは、非クラスター化インデックスのポインターは、クラスター化インデックスを定義する値で構成されます。また、テーブル(ヒープ)上にインデックスが存在しない場合は、行識別子をポインタとしてデータを検索するスキャンを使用します。

出典: SQL Server 2008 Query Performance Tuning Distilled

于 2012-09-27T16:01:48.107 に答える