次のパターンの使用を指摘するさまざまな記事を見てきました。
ID
(uniqueidentifier
) : PK、クラスター化されていないClusteredID
(int
) : INDEX、クラスター化 (IDENTITY)- 私の他のコラム(いろいろ)
このパターンについての私の解釈では、(これは多くの状況で役立ちます) を使用してレコードを識別できますが、生成された列値uniqueidentifier
の順序が増分するため、クラスター化インデックスがそれほど断片化されないことを意味します。int identity
これまでのところ、これはすべて私にとって理にかなっています。
私が完全に理解していないのは、次のことです。
一意の識別子が の場合、uniqueidentifier
関連するテーブルでこれを FK として使用することは理にかなっています。これで、2 つのテーブルを結合する select ステートメントを実行するSQL Server
と、 で結合が実行されますuniqueidentifiers
。ただし、実際にはクラスター化されているのは int インデックスであるため、int でのクラスター化は結合のパフォーマンスに役立たないと考えていました。
上記の仮定が正しければ、クラスター化された int インデックスを追加する利点を理解していません。
したがって、私の仮定は正しくないと思います。私の考えのどこが間違っているのか誰か教えてもらえますか?