2009-06-09 9 views
0

, was der Effekt sein wird, wenn Uniquedatentyp Spalte gruppiert ist/nicht gruppierten Index in einer Tabelle SQL Server 2005/2008. Ich habe gelesen, es ist schlecht gestaltete Tabelle, wie dieses Problem zu vermeiden und was ist die beste Lösung?unique mit Index

Antwort

1

Wenn es nicht geclusterten ist, bedeutet dies nur der Index breit sein wird (16 Byte pro Zeile, anstatt 4 Byte pro Zeile mit einer ganzen Zahl).

Wenn es gruppiert ist, dann werden Einfügungen zu Seitenteilungen führen, je nachdem, wie viel freier Speicherplatz (Füllfaktor) Sie in dem Index verlassen, wenn Sie erstellen/es wieder aufzubauen.

Es gibt ein paar Fragen über SO Erörterung dieses Themas:

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 ist eine schlechte Wahl für Clustered-Index in SQL Server , da aufgrund seiner Zufälligkeit der Werte der Cluster Der ed-Index wird stark fragmentiert.

Da die Clustered-Index-Felder in jeden der nicht gruppierten Indizes repliziert werden, kann dies auch zu einer erheblichen Verschwendung von Festplatten- und Speicherplatz in SQL Server führen.

GUID ist eine gute Wahl aus der Perspektive eines Programmierers - mehr oder weniger zufällig, fast garantiert einzigartig - aber aus einer Datenbankperspektive ist es sehr schlecht, sie als Clustered Index in SQL Server zu verwenden.

See Kim Tripp verschiedene Artikel zu diesem Thema - sehr englihtnening!

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

Marc

+0

Wenn der Raum verlassen wird (i..e Füllfaktor) in einem Clustered-Index auf einem GUID, ist es nicht unbedingt so schlecht, wie wird oft berichtet. Wenn Sie regelmäßige Index-Maintenance und einen sorgfältig durchdachten Füllfaktor haben. Zu sagen, dass ich versuche, nicht Clustered-Indizes auf GUIDS zu machen ... –

+0

Ja - können Sie die Effekte mit einem wenig Köpfchen zu mildern - aber GUIDs als gruppierten Tasten sind nur immer weniger ideal als ein INT - Zeit. Auch der verschwendeten Speicherplatz (multipliziert mit allen nicht-geclusterten Indizes, die die Clustering-Schlüssel enthalten) nicht optimiert entfernt werden ..... –