2

SQL Server 2005 データベースに、次の 2 つの列で構成されるジャンクション テーブルがあります。

  • object_id (一意の識別子)

  • property_id (整数)

これらの値が組み合わさって、複合主キーが作成されます。

SELECT パフォーマンスのためにこの PK インデックスを作成する最良の方法は何ですか?

列が 2 つの整数の場合は、複合クラスター化インデックス (デフォルト) を使用します。ただし、uniqueidentifiers が関係している場合、クラスター化されたインデックスについて悪いことを聞いたことがあります。

誰でもこの状況の経験がありますか?

4

3 に答える 3

2

はい、GUID はクラスター化されたインデックスには非常に適していません。GUID は設計上非常にランダムであり、大規模な断片化が発生し、パフォーマンスの問題が発生するためです。

多くの貴重な背景情報については、Kim Trippのブログを参照してください。

これらの 2 つの列にインデックスが本当に必要な場合は、クラスター化されていないインデックスをお勧めします。クラスター化されたインデックスではなく、プライマリ インデックスにすることもできます。

マルク

于 2009-05-24T18:51:58.793 に答える
0

私はID列を作成し、これを主キーとクラスター化インデックスにします。その後、必要に応じて objectid propertyid に非クラスター化インデックスを作成できます。

一意の制約を作成して、キーの一意性を確保できます。

これは、行が順番に挿入されるため、ページ分割が減少するためです。さらに、PK に整数を使用すると、クラスター化インデックスの値が小さくなります。

于 2009-05-25T08:30:44.497 に答える