2011-01-03 23 views
6

Prima di eseguire un comando sql sensibile, volevo eseguire un controllo di integrità.Eliminazione di record con data precedente a 3 giorni, per lavori di stampa di 3 giorni?

sto cercando di eliminare i record che hanno un valore di data [LoadDt] di età superiore a 3 giorni e il mio codice è:

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

voglio pianificare questo come un processo SQL in modo che la mia tabella IntraDayStats ha un rolling storia di 3 giorni. Il lavoro verrà eseguito di notte.

risposta

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

non è sargable (non verrà utilizzato un indice), utilizzare

where LoadDt < getdate()- 3 

La prossima volta, se si desidera controllare, fare la DELETE un SELECT e vedere quello che si ottiene indietro

+0

che cosa è sargable? non ho mai sentito parlare di questo ... ho fatto la selezione ma volevo ricontrollare la logica per tre giorni rotolanti. grazie – kacalapy

+0

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

Problemi correlati