Eliminazione di record che hanno una data più vecchio di 3 giorni, per la laminazione 3 giorno di lavoro?

StackOverflow https://stackoverflow.com/questions/4585432

Domanda

Prima di eseguire un comando SQL sensibile che volevo fare un controllo di integrità.

Sto cercando di eliminare i record che hanno un [LoadDt] valore di data più vecchio di 3 giorni e il mio codice è:

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

Voglio programmare questo come un processo SQL in modo che la mia tabella IntraDayStats ha una storia a rotazione di 3 giorni. Il lavoro verrà eseguito durante la notte.

È stato utile?

Soluzione

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

non è sargable (non sarà usato un indice), uso

where LoadDt < getdate()- 3 

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top