Eliminazione di record che hanno una data più vecchio di 3 giorni, per la laminazione 3 giorno di lavoro?
-
14-10-2019 - |
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.
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