4

ここでさまざまな質問/回答を読みましたが、これは基本的に、uniqueidentifier 列にクラスター化インデックスを設定することは、パフォーマンス上の理由から不適切な選択であることを示しています。とにかく、私はuniqueidentifierを主キーとして使用する必要があり、生成された値が互いにあまりにも似ているため、newsequentialid()を使用したくありません(ユーザーが[合理的に]「推測」できないように、より多くのランダムIDが必要です)別の ID)。

では、この PK をインデックス化する最良の方法は何ですか? この列のクラスター化インデックスは理想的ではありませんが、「一意の非クラスター化」インデックスよりも優れていますか?

SQL Server 2005 を使用しています。

4

1 に答える 1

10

まず第一に、NEWID()(ランダムに見えるだけでなく) ランダム性を達成するために を使用しようとしている場合、問題が発生します。

他のインデックスがクラスター化インデックス キーを参照し、クラスター化インデックス キーが長いとすべてのインデックスのパフォーマンスが低下するため、通常は理想的な選択とは言えません。整数列を作成IDENTITYし、それをクラスター化インデックスにして、その列にクラスター化されていない一意のインデックスを作成するだけuniqueidentifierです。

于 2009-05-04T17:45:53.660 に答える