一意のクラスター化インデックスとクラスター化プライマリキーの間に明確な違いはありますか?


17

2つの間に意味意図に違いがあるかもしれないことを理解していますが、クラスター化された主キーとクラスター化された一意のインデックスの間に動作やパフォーマンスの違いはありますか?

回答:


15

主な違いの1つは、一意キーの主キーで許可されていないNULL値を使用できることです。クラスター化されているかどうかにかかわらず、これは主キーと一意キーの実際の実装の主な違いです。

ああ、テーブルには1つのPKと多くの英国を含めることができます:-)

これらは両方ともパフォーマンスではなくINTENTの違いです。それ以外の場合、違いはないと思います。PKまたはUKの背後では、SQL Serverはインデックスを作成し(要求に応じて、クラスター化されているかどうかに関係なく)、その使用方法はソースの透過性です。


(A)のエイリアスとして、NOT NULL UNIQUE CLUSTEREDまたは(B)RDMSが不可知であるにもかかわらず、特定のUQがメタデータの意味で「特別」であることを強調するために、PKを使用する理由はありませんか?
すべての取引のジョン

はい、そのような何か、私はオプションBに自分で行きます:-)。
マリアン

理由があります-特別な値NULLの使用を不適切な場所で止めることです!
ジェームズライアン

@JamesRyan:それはJon of All Tradesの理由#Aでカバーされています。
アンドリーM

1
@JamesRyan:はい、間PRIMARY KEYNOT NULL UNIQUE、前者はに変身するためにはるかに困難になりますNULL UNIQUE(制約がすでに外部キーによって参照された場合は特に)。NOT NULLへの偶発的な変更を確実に防止しNULLます。
アンドリーM

8

クラスター化されたプライマリキーと一意のクラスター化インデックスの間には、一意のクラスター化インデックスがNULL値を持つことができる以外に違いはありません。

一意でないクラスター化インデックスには、一意でない値に対して処理する必要がある一意識別子があります。


そのテーブルのそれ以上のインデックスは、主キーによって作成されたインデックスを無視して、クラスター化インデックスの行を直接指しているということですか?
bernd_k

1
それは正しいです。非クラスター化インデックスは、プライマリキーではなくクラスター化キーを指します。主キーがクラスタ化されていないキーである場合、外部キー経由で使用できるように、NULL値をサポートしない列に一意性を強制するだけです。
-mrdenny
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.