2011-01-03 20 views
6

Antes de ejecutar un comando sql sensible, quería hacer una comprobación de cordura.¿Eliminar registros con una fecha anterior a 3 días, para un trabajo de 3 días rodando?

Estoy tratando de eliminar los registros que tienen un valor [LoadDt] fecha más de 3 días y mi código es:

delete IntraDayStats 
where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate())) >= 3 

que desee programar esto como un trabajo SQL para que mi mesa IntraDayStats tiene una rodando 3 días de historia. El trabajo se ejecutará todas las noches.

Respuesta

9
where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate())) >= 3 

no es sargable (no será utilizado un índice), use

where LoadDt < getdate()- 3 

La próxima vez, si desea comprobar, que el DELETE un SELECT y ver lo que recibe

+0

¿Qué es sargable? Nunca oí hablar de esto ... hice la selección, pero quería verificar la lógica por tres días. gracias – kacalapy

+0

http://en.wikipedia.org/wiki/Sargable – SQLMenace

Cuestiones relacionadas