次のいずれかとの関係がある2つのテーブル間の結合を介してデータをフェッチするクエリを比較すると、パフォーマンスに違いがありますか?
それ自体はパフォーマンスとは関係ありませんが、概念的な問題です。
UNIQUE CONSTRAINTを使用して、事実を述べます。主キーを追加したためなど、たまたま一意であるインデックスがある場合は、UNIQUE INDEXを使用します。
シナリオに従って:
主キー
一意のキー
注意:
どちらもクラスター化または非クラスター化することができます。制約を作成するときに、これらのキーに使用するインデックスのタイプを選択できます。
出典:
http://social.msdn.Microsoft.com/Forums/en/transactsql/thread/290619be-b892-4f52-99e0-d8e2ff80aec4
http://bytes.com/topic/sql-server/answers/83999-unique-constraint-vs-unique-index-ms-sql-2000-a
あなたの質問に良い答えを与えるのに十分な情報があるとは思いません。 PK/UIがClusteredであるかNon-Clusteredであるかは、結果の結合にインデックスの一部ではないフィールドが含まれる場合の主要なパフォーマンス係数。
テーブルに一度に存在できるクラスター化インデックスは1つだけです。デフォルトでは、PKはクラスター化されています。ただし、PKが作成される前にクラスター化インデックスが存在した場合、PKは非クラスター化(異常)になります。
したがって、ほとんどの場合、UIはPKの後に作成されるため、UIはクラスター化されないため、結合結果に行の非インデックスフィールドを含める必要がある場合は遅くなります。同様に、PKの代わりにクラスター化されたUIが作成された場合、パフォーマンスはクラスター化されたPKと同等であると予想されます。
「含まれる」列を使用してインデックスを作成することもできます。これにより、クラスター化の問題が回避されます。これにより、結合結果で行を物理的にフェッチする必要なく、含まれる列を使用できるようになります(クラスター化されていない場合、行が別の場所にあるため)。