Deleting records having a date older than 3 days, for rolling 3 day job?

kacalapy picture kacalapy · Jan 3, 2011 · Viewed 7.8k times · Source

Prior to executing a sensitive sql command I wanted to do a sanity check.

I am trying to delete records that have a [LoadDt] date value older than 3 days and my code is:

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

I want to schedule this as a sql job so that my IntraDayStats table has a rolling 3 day history. The job will run nightly.

Answer

SQLMenace picture SQLMenace · Jan 3, 2011
where DATEDIFF(dd, LoadDt, dateadd(d,-3, getdate()) ) >= 3 

is not sargable (an index won't be used), use

where LoadDt < getdate()- 3 

Next time if you want to check, make the DELETE a SELECT and see what you get back