Jimmy Nilsson erläutert sein COMB-Guid-Konzept here. Dieses Konzept ist in NHibernate unter anderem wegen seines angenommenen Leistungswerts gegenüber Standard-GUIDs beliebt, die typischerweise viel zufälliger sind.Leistungswert der COMB-Guides
Im Test scheint dies jedoch nicht der Fall zu sein. Fehle ich etwas?
Testfall:
Ich habe eine Tabelle mit dem Namen Temp (nicht eine temporäre Tabelle, nur eine Tabelle mit dem Namen „temp“) mit 585.000 Zeilen drin. Ich habe eine neue Tabelle namens Codes und möchte alle 585.000 Codewerte aus der temporären Tabelle in die Codetabelle kopieren. Der Test SQL I ausgeführt wurde:
set statistics time on;
truncate table codes;
DBCC DBREINDEX ('codes', '', 90);
insert into codes (codeid, codevalue)
select newid(), codevalue from temp
truncate table codes;
DBCC DBREINDEX ('codes', '', 90);
insert into codes (codeid, codevalue)
select CAST(CAST(NEWID() AS BINARY(10)) + CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER), codevalue from temp
Leistung mit Standard-GUID-Werte:
SQL Server-Ausführungszeiten: CPU Zeit = 17250 ms, verstrichene Zeit = 15735 ms.
(585000 Zeile (n) betroffen)
Leistung mit Werten KAMM GUID:
SQL Server-Ausführungszeiten: CPU Zeit = 17500 ms, verstrichene Zeit = 16419 ms.
(585000 Zeile (n) betroffen)
Was bin ich? Die COMB-GUID-Werte führten zu etwas längeren Zeiten, vermutlich aufgrund der zusätzlichen Konvertierungen. Ich dachte, der Punkt wäre, die Einfügezeit zu reduzieren, indem man die GUIDS mit dem Datum für die letzten 6 Bytes halb anordnet, aber die Leistungssteigerung scheint nicht vorhanden zu sein.
Hat meine oder irgendeine Antwort Ihre Frage befriedigen? – gbn
@Chris: Ist gbn korrekt? – jgauffin