2017-12-24 9 views
1

空き領域がない、またはページ内の一意性の順序を維持する、一意のクラスタ化インデックスでページ分割が行われることは知っています。SQL ServerのNON -UNIQUEクラスタ化インデックスでページ分割が行われますか?

一意性を維持する必要はないが、依然としてページ識別子を含む隠し値があるため、NON-UNIQUEクラスタ化インデックスでもページ分割が行われますか?

+1

**非ユニークな**クラスタ化インデックスを作成すると、SQL Serverは自動的に4バイトの** uniquefier **をデータに追加し、インデックスを再度ユニークにします。そして、そうです - それは、固有のクラスタード・インデックスと全く同じです。 –

答えて

1

ページ分割は、一意性とはあまり関係ありません。

「ページ内の一意性の順番」という言い方がわかりません。

SQL Serverでは、背後では一意ではないすべてのインデックスを一意に扱います*ただし、ページが分割されていない場合でも、行が拡大してもはやページに収まらない場合、または新しい行が必要な場合インデックスの順序を維持するためにフルページに挿入されます。

*論理的または物理的な行識別子を追加して、2番目以降の重複値に一意化子を追加し、非クラスタ化インデックスに一意化子を追加することでクラスタ化インデックスを作成する。

1

キー・シーケンスがキー・シーケンス内に増分的に挿入されていない場合、または索引/データ行が8Kページを超えるように更新された場合、ページ分割はすべてのbツリー索引(クラスタ化、非クラスタ化、一意ではない)サイズ。

"ページ識別子"は正しい用語ではありません。すべての行には、クラスタ化インデックス・キーである一意の行ロケータと、重複するキー値に対する増分4バイトの固有識別子があります。クラスタ化インデックスが存在しない場合(ヒープ)、行ロケータは物理的な場所(ファイル/ページ/スロット)です。

一意でないクラスタード・インデックスに追加された内部ユニファイナーはインクリメンタルなので、インデックス・キーがテーブル内の最後のものと同じかそれ以上であれば、新しい行を挿入するとページ分割は発生しません。

関連する問題