Wie wird GUID intern von SQL gespeichert und verglichen (insbesondere MS SQL Server 2008)? Ist es eine Nummer oder ein String? Gibt es einen großen Leistungseinbruch bei der Verwendung von GUID als Primärschlüssel?
Neben dem hier erwähnten Clusterproblem: Welche Best Practices für die Verwendung einer GUID als Primärschlüssel, insbesondere hinsichtlich der Leistung?
Ich denke, es sollte 128-Bit-Nummer sein (wie beschrieben hier ) ), aber ich kann keine Modusdetails darüber finden, wie es in SQL Server implementiert ist.
Leistungsmäßig ist normal GUID
langsamer als INT
in SQL Server
Wenn Sie GUID
verwenden möchten, verwenden Sie uniqueidentifer
anstelle von varchar
als Datentyp. Microsoft hat nicht erwähnt, wie sie es implementieren, es gibt eine Geschwindigkeitsoptimierung, wenn Sie uniqueIdentifer
als Datentyp verwenden.
Um GUID
als Primärschlüssel zu verwenden, ohne die Geschwindigkeit der Ganzzahl zu opfern, machen Sie den GUID
Wert sequentiell . Definieren Sie den uniqueidentifer
-Datentyp als PK, und setzen Sie den Standardwert auf NEWSEQUENTIALID()
.
Weitere Informationen finden Sie unter NEWSEQUENTIALID (Transact-SQL) Details.
Wie sequenzielle GUID
-Werte zur Leistung beitragen, erfahren Sie unter Kosten von GUIDs als Primärschlüssel .
Tags und Links sql sql-server guid primary-key