Ich würde sagen GROUP BY INT ist schneller, da nur 4 Bytes in einem varchar-Feld gegen n Bytes geprüft werden.
Entscheiden Sie sich für einen Datentyp, der ausschließlich auf der Leistung des Datentyps in GROUP BY
basiert? Sind es die gleichen Daten? Sie entscheiden nur, wie Sie 123456 als INT
oder VARCHAR
speichern? Haben Sie andere Faktoren berücksichtigt, z. B. die CPU-Kosten für die Konvertierung zwischen numerischen und String-Typen, wenn dies nicht unbedingt erforderlich ist? Der zusätzliche Speicher, der benötigt wird, um die gesamte Tabelle im Cache zu halten? Der Zeilenoverhead für VARCHAR
gibt die Länge an? Was ist mit Speicherkosten (z. B. 1234567890 benötigt 4 Byte als INT
, aber '1234567890' benötigt 10 Byte + Zeilenoverhead als VARCHAR
)? Wie steht es mit Kompression? Wie wird der Index für diese Spalte mit dem gruppierten Index in der Tabelle ausgerichtet, was sich darauf auswirken kann, wie nützlich "bereits gruppiert" sein wird?
Mit anderen Worten, ich würde GROUP BY
Leistung in einer Blase nicht berücksichtigen.
Tags und Links sql-server performance types group-by