2011-01-03 36 views
6

Trước khi thực hiện lệnh sql nhạy cảm, tôi muốn thực hiện kiểm tra độ chính xác.Xóa hồ sơ có ngày cũ hơn 3 ngày, để thực hiện công việc 3 ngày?

Tôi cố gắng để xóa các bản ghi có giá trị ngày [LoadDt] cũ quá 3 ngày và mã của tôi là:

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

Tôi muốn sắp xếp này là một công việc sql để bàn IntraDayStats tôi có một lịch sử 3 ngày. Công việc sẽ chạy hàng đêm.

Trả lời

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

không sargable (một chỉ số sẽ không được sử dụng), sử dụng

where LoadDt < getdate()- 3 

Lần sau nếu bạn muốn kiểm tra, làm cho DELETE một SELECT và xem những gì bạn nhận lại

+0

whats là sargable? tôi chưa bao giờ nghe nói về điều này ... tôi đã chọn nhưng muốn kiểm tra lại logic trong ba ngày. cảm ơn – kacalapy

+0

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

Các vấn đề liên quan