Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sollte eine Sequential Guid-Primärschlüsselspalte ein gruppierter Index sein?

Zunächst zur Klarstellung:Ein Primärschlüssel und ein Clustered-Index sind zwei getrennte und unterschiedliche Dinge, d. h. das eine ist nicht an das andere gekoppelt (PKs können Nonclustered sein, Clustered-Indizes können Nicht-PKs sein).

Angesichts dessen denke ich, dass Sie mehr fragen:"Sollte eine sequentielle GUID als gruppierter Index verwendet werden". Das ist eine schwierige Frage, aber Kimberly Tripp hat darüber gesprochen wahrscheinlich das beste von allen, die ich je gesehen habe. Beachten Sie, dass sich der Artikel auf einen PK bezieht, aber innerhalb des Artikels bezieht sie sich darauf, dass die Überlegung hauptsächlich auf eine Clustered-Index-Auswahl im Vergleich zu einem PK zutrifft.

Angenommen, Sie haben sich bereits entschieden, eine GUID als Clusterschlüssel zu verwenden (was der Fall sein kann oder nicht), wäre die Verwendung einer sequentiellen GUID höchstwahrscheinlich eine bessere Wahl als eine nicht sequenzielle GUID, es gibt jedoch mindestens 1 Szenario, in dem eine nicht sequentielle GUID bevorzugt werden könnte (obwohl es ein sehr seltenes, sehr fortgeschrittenes Szenario ist, in dem Sie Ihr System und Ihren SQL-Server grundsätzlich so gut verstehen müssten, dass Sie keinen Zweifel daran haben, dass dies verwendet werden sollte - hätte damit zu tun Hotspots auf Ihrem Speichergerät und die Verteilung großer Schreibvolumina auf verschiedene Standorte des Clusters).