2009-12-01 3 views
2

그냥 거기에 내 논리를 확인하고 싶습니다.DATEDIFF 최적화

지난 30 일 동안 모든 신제품을 찾고 싶다고 가정 해 봅니다.

SELECT ProductName 
FROM ProductTable 
WHERE DATEDIFF(d, CreateDate, GETDATE()) < 30 

그러나, 나는 DATEDIFF 같은 기능을 내가 CreateDate에 만든 클러스터되지 않은 인덱스를 사용하지 않을 것을 이해 : 내 현재의 절차는 이것이다. 그래서 그러므로 내 쿼리 실행 빨리 다음 절차를 사용합니다 : BTW

SELECT ProductName 
FROM ProductTable 
WHERE CreateDate >= DATEADD(d, -30, GETDATE()) AND CreateDate < GETDATE() 

, 나는 내가있는 곳에서 SQL 서버가없는 그래서 실행 계획을 사용하여이 테스트 캔트.

답변

1

네가 맞다면, 사용 가능한 CreateDate의 모든 인덱스를 사용할 수 있으므로 두 번째 쿼리가 빠를 것입니다.