Utilizo SQL Server.
Tuve que indizar la columna Fecha sobre la que aplico el filtro con el Where.
En este momento la estoy corriendo y lleva casi 3hs de ejecución.
La tabla tiene 167millones de registros.
Por día se escriben cerca de 7500 registros que son los que se levantan con la consulta.
El campo fecha es un datetime que escribe fecha hora, utilizo el formato 121.
Como es tan pesada la ejecución no se utiliza nunca para un rango de fechas, por lo cual da igual cambiar el between por equal en caso de que sirva para algo.
Actualmente esta asi:
Código SQL:
Ver originalWHERE CONVERT(DATETIME,CONVERT(VARCHAR(10),Fecha, 121), 121) BETWEEN
CONVERT(DATETIME,CONVERT(VARCHAR(10), @fechaDesde, 121), 121) AND
CONVERT(DATETIME,CONVERT(VARCHAR(10), @fechaHasta, 121), 121)
La idea sería convertirlo a esto:
Código SQL:
Ver originalWHERE
CONVERT(VARCHAR(10),Fecha, 121) = CONVERT(VARCHAR(10), @fechaDesde, 121)
Siempre y cuando el cambio permita optimizar los tiempos de ejecución.