2013-10-18 14 views

Trả lời

13

Bạn nên sử dụng truy vấn phạm vi thay vì gói cột trong lệnh gọi hàm để chỉ mục có thể được sử dụng.

SELECT * 
FROM TABLE1 
WHERE duedate >= DATEADD(month, DATEDIFF(month, 0, getdate()), 0) 
     AND duedate < DATEADD(month, 1 + DATEDIFF(month, 0, getdate()), 0) 
+1

Truy vấn này sử dụng Chỉ mục trên cột. –

+1

Nhưng đừng quên [vấn đề này] (http://www.sqlperformance.com/2013/09/t-sql-queries/datediff-bug) mà trước tiên bạn đã thông minh cho tôi về [ở đây] (http://stackoverflow.com/a/18242413/61305). –

+0

@AaronBertrand - Tốt, xấu hổ họ đã không đề cập đến phiên bản của SQL Server. Giải pháp cho câu hỏi được liên kết là năm 2008 trở lên. –

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