18

私の同僚の1人は、SQL Server 2008のテーブルにインデックスを追加すると、PKのインデックスもそのインデックスに追加されるという印象を受けています。したがって、より広い主キーを使用している場合、そのキーも新しいインデックスに含まれ、PKのインデックスにすでに支払われているペナルティを超えて使用されるディスク容量が大幅に増加します。私はそれを前に聞いたことがなく、これまでの私の検索は空っぽになっています。

うまくいけば、ここの誰かがこれを確認または拒否するために関連するドキュメントを私に指摘することができます。お願いします?

4

1 に答える 1

32

同僚が「主キー」と「クラスター化インデックスキー」を混同しています(デフォルトでは、nonclusteredキーワードを指定せずにヒープ上に作成されたPKがテーブルのクラスター化インデックスになるためです)。

クラスター化インデックスのあるテーブルでは、クラスター化インデックスキーの値が、行ロケーターとして機能するすべての非クラスター化インデックスに含まれる列として追加されること事実です。(ただし、列が既に非クラスター化インデックス定義の一部である場合、列は2回追加されません)。

理想的なクラスター化されたインデックスキーは

  • 一意(行ロケーターとして機能するには、一意である必要があります-SQL Serverは、一意でない場合は一意化子を追加します)
  • ナロー(クラスター化されていないすべてのインデックスで再現されるため)
  • static(複数の異なる場所で値を更新する必要はありません)
  • 増え続ける
于 2010-10-01T19:26:41.023 に答える