クラスター化インデックスと非クラスター化インデックスの違いは、クラスター化インデックスがデータベース内の行の物理的な順序を決定することです。 .つまり、クラスター化インデックスを PersonId
に適用します。 行が PersonId
によって物理的にソートされることを意味します これにより、これに対するインデックス検索が行に直接進むことができます (行の場所に誘導する非クラスター化インデックスではなく、余分な手順が追加されます)。
そうは言っても、それは珍しい 主キーはクラスター化インデックスではありませんが、前代未聞ではありません。あなたのシナリオの問題は、実際にはあなたが想定していることとは逆です:unique が必要です 重複ではなく、クラスター化インデックスの値。クラスター化されたインデックスは行の物理的な順序を決定するため、インデックスが一意でない列にある場合、サーバーは重複するキー値を持つ行にバックグラウンド値を追加する必要があります (この場合、同じ値を持つすべての行PersonId
) 結合された値 (キー + バックグラウンド値) が一意になるようにします。
私が提案する唯一のことはしない 代理キー (あなたの CourtOrderId
) 列を主キーとして使用しますが、代わりに PersonId
の複合主キーを使用します およびその他の一意に識別される列または列のセット。ただし、それが不可能な場合 (または実用的でない場合) は、クラスター化されたインデックスを CourtOrderId
に配置します。 .