Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/10/2018, 11:39
Avatar de Huasi
Huasi
 
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Performance Fecha Where Between vs Equal

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 original
  1. WHERE CONVERT(DATETIME,CONVERT(VARCHAR(10),Fecha, 121), 121) BETWEEN   
  2. CONVERT(DATETIME,CONVERT(VARCHAR(10), @fechaDesde, 121), 121) AND
  3. CONVERT(DATETIME,CONVERT(VARCHAR(10), @fechaHasta, 121), 121)

La idea sería convertirlo a esto:

Código SQL:
Ver original
  1. WHERE
  2. CONVERT(VARCHAR(10),Fecha, 121) = CONVERT(VARCHAR(10), @fechaDesde, 121)

Siempre y cuando el cambio permita optimizar los tiempos de ejecución.