Eine 128-Bit-GUID (uniqueidentifier
) Schlüssel ist natürlich 4x größer als ein 32-Bit int
Schlüssel. Es gibt jedoch einige entscheidende Vorteile:
- Kein "IDENTITY INSERT"-Problem beim Zusammenführen von Inhalten
- Wenn Sie anstelle von NEWSEQUENTIALID() einen COMB-Wert verwenden, erhalten Sie einen "kostenlosen" INSERT-Zeitstempel. Sie können sogar
SELECT
vom Primärschlüssel basierend auf einem Datums-/Zeitbereich, wenn Sie möchten, mit ein paar ausgefallenenCAST()
Anrufe. - Sie sind weltweit einzigartig, was sich hin und wieder als ziemlich praktisch herausstellt.
- Da Hochwassermarken nicht nachverfolgt werden müssen, kann Ihr BL-Layer den Wert anstelle von SQL Server zuweisen, wodurch der Schritt
SELECT scope_identity()
entfällt um den Primärschlüssel nach einer Einfügung zu erhalten. - Wenn es auch nur im Entferntesten möglich ist, dass Sie mehr als 2 Milliarden Datensätze haben könnten, müssen Sie
bigint
verwenden (64 Bit) stattint
. Sobald Sie das getan haben,uniqueidentifier
ist nur doppelt so groß wie einbigint
. - Die Verwendung von GUIDs macht es sicherer, Schlüssel in URLs usw. offenzulegen, ohne sich "Errate-die-ID"-Angriffen auszusetzen.
- Zwischen der Art und Weise, wie SQL Server Seiten von der Festplatte lädt, und der Tatsache, dass Prozessoren jetzt hauptsächlich 64-Bit-Prozessoren sind, bedeutet dies nicht, dass ein Vergleich viermal länger dauert, nur weil eine Zahl 128 Bit statt 32 Bit hat. Der letzte Test, den ich gesehen habe, hat gezeigt, dass GUIDs fast genauso schnell sind.
- Die Indexgröße hängt davon ab, wie viele Spalten sind enthalten. Auch wenn die GUIDs selbst größer sind, können die zusätzlichen 8 oder 12 Byte im Vergleich zu den anderen Spalten im Index unbedeutend sein.
Am Ende lohnt es sich vielleicht nicht, die Vorteile einer GUID zu verlieren, wenn Sie durch die Verwendung von Ganzzahlen einen kleinen Leistungsvorteil herausholen. Testen Sie es empirisch und entscheiden Sie selbst.
Ich persönlich nutze je nach Situation immer noch beides, aber entscheidend war bei mir nie wirklich die Performance.