6

Non Clustered Index「インデックスにNonclusteredは、データ行自体ではなく、実際のデータ行を指すインデックス付きの列と行ロケーターからの値のみが含まれています。これは、クエリエンジンが追加の手順を実行する必要があることを意味します。実際のデータを見つけてください。」

クエリ- についてはよくわかりませんRow Locator。私はそれが何もないと仮定していますPrimary keyRow-Locator行を一意に識別するためにバックグラウンドで何かが起こっています。

4

2 に答える 2

11

テーブルに一意のクラスター化インデックスがある場合、「行ロケーター」はクラスター化インデックスの列で構成されます。

一意でないクラスター化インデックスでは、「行ロケーター」はクラスター化インデックスの列と、参照を一意にするために SQL Server が追加する新しいフィールドで構成されます。新しいフィールドはユーザーには表示されません。これは「一意識別子」と呼ばれ、4 バイトで構成されます。

クラスター化インデックス (別名ヒープ) のないテーブルでは、「行ロケーター」は RID または行識別子です。RID は物理的な場所を指します。これは、ファイル識別子 (ID)、ページ番号、およびページ上の行番号で構成されます。

「行ロケーター」の実際的な結果の 1 つは、多数のインデックスを持つテーブルに小さな主キーを使用することが理にかなっているということです:) 詳細については、この MSDN ページを参照してください。

于 2012-05-29T16:37:54.363 に答える
0

@Nilish:「候補キー」は、主キーに使用する列を決定するときに使用される用語です。SQL はそれについて何も知りません。主キーに使用できる別の列のセットであることを除いて、「代替キー」が何を意味するのかわかりません。

そのため、SQL 内にはこれらの「優先順位」の概念はありません。SQL は、主キーを作成してレコードを一意に識別するまで、どの列がレコードを一意に識別するかを認識しません。キーを定義すると、SQL がそれらを使用します。

テーブルには、インデックスがない (ヒープ)、一意でないクラスター化インデックス、または一意のクラスター化インデックスがあります。他に可能性はありません。(主キーは通常、一意のクラスター化インデックスです。)

于 2012-06-15T18:55:04.143 に答える