20

これについての私の疑問を解消してください。SQL Server (2000 以降) では、主キーは自動的にクラスター インデックスになりますか、それとも主キーにクラスター化されていないインデックスを使用することを選択できますか?

4

2 に答える 2

28

いいえ、非クラスター化できます。ただし、非クラスター化として明示的に定義せず、テーブルにクラスター化インデックスがない場合は、クラスター化として作成されます。

于 2009-02-24T12:01:50.693 に答える
12

また、主キーをクラスター化できるようにするのは悪いことだと付け加える人もいるかもしれません。特に、主キーがIDENTITYによって割り当てられている場合、それは本質的な意味を持たないため、それに応じてテーブルを配置しておくための努力は無駄になります。

ProductID INT IDENTITYPRIMARYKEYを持つテーブルProductについて考えてみます。これがクラスター化されている場合、何らかの形で関連している製品がディスク全体に広がる可能性があります。ManufacturerIDやCategoryIDなど、クエリの対象となる可能性のあるものでクラスター化する方がよい場合があります。これらのいずれの場合でも、クラスター化されたインデックスは(他の条件が同じであれば)対応するクエリをはるかに効率的にします。

一方、これを指す子テーブルの外部キーは、クラスタリングの良い候補になる可能性があります(私の反対は、親戚ではなく、実際にIDENTITY属性を持つ列に対するものです)。したがって、上記の私の例では、ManufacturerIDがManufacturerテーブルへの外部キーであり、IDENTITYとして設定されている可能性があります。その列はクラスター化されるべきではありませんが、それを参照するProductの列は、クラスター化される可能性があります。

于 2009-02-24T18:16:13.663 に答える