web-dev-qa-db-ja.com

ClusteredIndexとUniqueIndexの違いは何ですか?

SQL Serverでのインデックス作成について学習しているところですが、クラスター化インデックスと一意のインデックスが混同されています。両方が一意のキー列に適用される場合例:PersonID。両方の違いは何ですか。

ありがとう。

15
BreakHead

一意のインデックスは、一意の制約を持つ単なるインデックスであり、それ以上でもそれ以下でもありません。クラスター化インデックスは、インデックスと一致するようにディスク上のデータを物理的に順序付けます。 1つの列だけを介してテーブル内のデータに頻繁にアクセスする場合に便利です。主キーを介して。また、テーブルに含めることができるクラスター化インデックスは1つだけです(もちろん、当然です)。

17
ckruse

2つは無関係です:

  • 「一意」は、各値が発生することを保証します正確に 1回のみ
  • 「クラスター化」とは、データがディスク上に配置される方法です。

あなたは4つすべての順列を持つことができます:

  • 「ユニークな非クラスター化」
  • 「ユニークなクラスター化」
  • 「非固有の非クラスター化」
  • 「非固有のクラスター化」

SQL Serverの「主キー」(PK)のデフォルトがクラスター化されているため、混乱が生じます。

ただし、「主キー」は常に一意である必要があります。 「unique」と「PK」の違いは、uniqueでは1つのNULLが許可され、PKではNULLが許可されないことです。

最後に、いくつかの数の制限

  • clusteredはディスク上のレイアウトを参照するため、テーブルごとに1つのclusteredインデックスのみを持つことができます
  • テーブルに複数のプライマリキーを含めることはできませんが、多くの一意のインデックスを含めることができます
36
gbn

それについての大まかな考え方の1つは、電話帳について考えることです。クラスター化インデックスは、ページが書き込まれる順序です。その他のインデックスは、移動するページを示す個別のリストです。

たとえば、電話帳は姓で「クラスター化」されていますが、通りで検索して、偽の通りに住んでいる人が3,45ページと63ページにあることを示す別のリストを作成することもできます。

9
Kevin Ross

AFAIKのすべてのテーブルには、通常は主キーであるクラスター化インデックスを1つだけ含めることができますが、一意のインデックスをm個持つこともできます。

詳細: http://decipherinfosys.wordpress.com/2007/07/04/back-to-the-basics-difference-between-primary-key-and-unique-index/

1
Jahan Zinedine