2009-06-09 16 views
0

uniqueidentifierのデータ型の列がクラスタ化されている場合の効果/テーブルSQL Server 2005/2008のNon Clusteredインデックス。私はそれがひどく設計されたテーブルを読んで、どのようにこの問題を回避し、何が最善の解決策ですか?uniqueidentifier with index

答えて

1

クラスタ化されていない場合は、索引がワイド(整数のある行につき4バイトではなく、行ごとに16バイト)であることを意味します。

クラスタ化されている場合、作成/再構築時にインデックスに残す空き領域(塗りつぶし係数)に応じて、挿入によってページ分割が発生します。

Should I get rid of clustered indexes on Guid columns

Advantages and disadvantages of GUID/UUID database keys

Clustered primary key on unique identifier ID column in SQL Server

Improving performance of cluster index GUID primary key

0

GUIDは、SQL Serverのクラスタ化インデックスのための悪い選択である:

SOこのトピックを議論する上でいくつかの質問があります。その値のランダム性のために、クラスタedインデックスが断片化してしまいます。

また、クラスタ化インデックスフィールドは各非クラスタ化インデックスにレプリケートされるため、SQL Serverでディスクとメモリ領域が大幅に浪費される可能性があります。

GUIDは多かれ少なかれランダムで、ほとんどユニークであることが保証されていますが、SQL Serverのクラスタードインデックスとしてそれらを使用することは非常に悪い選択です。

これについてのKim Trippのさまざまな記事を参照してください。非常によく練習しています!

http://sqlskills.com/BLOGS/KIMBERLY/post/The-Clustered-Index-Debate-Continues.aspx

http://www.sqlskills.com/BLOGS/KIMBERLY/post/Ever-increasing-clustering-key-the-Clustered-Index-Debateagain!.aspx

マルク・

+0

スペースがGUIDにクラスタ化インデックスに(i..eフィルファクター)残っている場合、それは必ずしも同じくらい悪いことではありませんしばしば報告されている。あなたが定期的な索引の整理と慎重に考えられたフィルファクタを持っているなら。そうだとしたら、私はGUIDS上でクラスタード・インデックスを作成しないようにしています... –

+0

はい、少しのスマートでエフェクトを軽減できますが、クラスタード・キーとしてのGUIDはINT期間よりも理想的です。また、無駄なスペース(クラスタ化キーを含むすべての非クラスタ化インデックスを掛け合わせたもの)を最適化することはできません。 –