インデックス作成の女王、キンバリー・トリップがこのトピックについて何と言っているかを確認したいと思います。
いくつかの理由から、クラスタリングキーの推奨事項から始めます。まず、簡単に決定できます。次に、この決定を早期に行うことで、特定の種類の断片化を予防的に防ぐことができます。特定の種類のベーステーブルの断片化を防ぐことができる場合は、テーブルをオフラインにする必要があるメンテナンスアクティビティ(SQL Server 2000では一部、SQL Server 2005ではそれ以下)を最小限に抑えることができます。OK、後で再構築するものに行きます.....
クラスタリングキーで私が探す重要なことから始めましょう:
* Unique
* Narrow
* Static
なぜユニークなのですか?
クラスタリングキー(存在する場合)は、すべての非クラスター化インデックスからのルックアップキーとして使用されるため、クラスタリングキーは一意である必要があります。たとえば、本の裏にあるインデックスを考えてみましょう。インデックスエントリが指すデータを見つける必要がある場合は、そのエントリ(インデックスエントリ)は一意である必要があります。そうでない場合は、どのインデックスエントリが探しているのでしょうか。 ?したがって、クラスター化されたインデックスを作成するときは、一意である必要があります。ただし、SQL Serverでは、クラスタリングキーが一意の列に作成されている必要はありません。任意の列に作成できます。内部的には、クラスタリングキーが一意でない場合、SQLServerはデータに4バイト整数を追加することでそれを「一意化」します。したがって、クラスター化されたインデックスが一意ではないものに作成された場合、インデックスの作成時に追加のオーバーヘッドが発生するだけでなく、無駄なディスクスペースが発生します。
出典: ますます増え続けるクラスタリングの重要な議論-再び!