クラスター化インデックスを持つ列でランダムな値を使用することはお勧めできないことはよく知られています。そのため、クラスター化インデックスを持つ主キーに GUID を使用することは通常はお勧めできません。newsequentialid() 関数を使用すると、これらの問題のほとんどを克服できます。
しかし、Web サーバーのファームで GUID を生成し、すべて同じデータベースにアクセスするとどうなるでしょうか? この記事で説明されているように、UuidCreateSequential を使用して .NET コードでシーケンシャル ID を作成しています 。 -sql-server-in-net.aspx
問題は、結果として得られる GUID が 1 台のマシンから連続している場合でも、複数のマシンでは同じようにならないことです。最上位の 11 バイト (SQL Server によると) は、同じマシンではほぼ同じままであるように見えるため、望ましい逆ではなく、効果的にマシン、次に時間でソートされます。
GUID 内のバイトを並べ替えてマシン間でほぼ連続した GUID を取得することは価値があり実行可能でしょうか? それともあきらめてインデックスを非クラスター化する必要がありますか?
ありがとう!