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