En Scaling Up Your Data Warehouse with SQL Server 2008 R2, el autor recomienda utilizar una clave de fecha entera en el formato de AAAAMMDD como un índice agrupado en sus tablas de hechos para ayudar a optimizar la velocidad de la consulta.TSQL DateTime to DateKey Int
¿Cuál es la mejor manera de convertir su campo de fecha clave en la tecla de fecha? Siento que el siguiente iba a funcionar, pero es un poco descuidado:
select Replace(CONVERT(varchar,GETDATE(),102),'.','')
Está claro que no estoy usando getdate, sino más bien una columna de fecha en la tabla que va a utilizar en mis agregaciones.
En primer lugar, ¿cómo sugeriría hacer esta conversión? Es mi idea aceptable?
En segundo lugar, ¿alguien ha tenido mucho éxito al usar la clave de fecha como índice agrupado?
convertir getdate() directamente a INT con IS 112 41008 da debido a que es el número de días desde la fecha 0. Puede validar comparando ese resultado con el resultado de DATEDIFF entre 0 y GETDATE(). 'SELECT CONVERTIR (INT, GETDATE(), 112), DATEDIFF (día, 0, GETDATE())' –
@AdamPorad +1 Saludos por aclarar que – HeavenCore
Creo que su prueba es defectuosa. La diferencia en el tiempo transcurrido es el resultado de mostrar la larga lista de valores en la pantalla.Además, está utilizando GetDate() para que SQL Server lo reconozca como una constante y no realice el cálculo para cada fila. Necesita usar una columna de la tabla actual. Por último, para evaluar con precisión el rendimiento, debe eliminar los búferes limpios y liberar el caché de procedimientos. No deberías hacer esto en un servidor de producción. –