sql server - transact - Rendimiento del servidor SQL: GROUP BY int vs GROUP BY VARCHAR
sql transact having (3)
Agrupar en un int sería un poco más rápido que agrupar en varchar, pero lo que realmente hace la diferencia es si hay un índice en el campo que la base de datos puede usar para la agrupación.
¿Hay una diferencia de rendimiento al agrupar por diferentes tipos de datos? Por ejemplo, si agrupo por INT, ¿obtendré un mejor rendimiento que si agrupo por varchar?
Yo diría que GROUP BY INT es más rápido, ya que solo se comprueban 4 bytes versos n bytes en un campo varchar.
¿Estás decidiendo sobre un tipo de datos basado únicamente en cómo funciona el tipo de datos en un GROUP BY
? ¿Son los mismos datos, solo está decidiendo cómo almacenar 123456, como INT
o VARCHAR
? ¿Ha considerado otros factores, como el costo de la CPU para convertir entre tipos numéricos y de cadena cuando de otro modo no sería necesario? ¿La memoria extra requerida para mantener toda la tabla en la memoria caché? ¿La fila de arriba para VARCHAR
indica longitud? ¿Qué pasa con los costos de almacenamiento (por ejemplo, 1234567890 toma 4 bytes como INT
, pero ''1234567890'' toma 10 bytes + sobrecarga de fila como VARCHAR
)? ¿Qué tal la compresión? ¿Cómo se alineará el índice de esta columna con el índice agrupado de la tabla, lo que puede afectar la utilidad de "ya agrupado"?
En otras palabras, no consideraría el rendimiento GROUP BY
en una burbuja.