시간 범위 내에서 행을 선택하는 데 너무 많은 시간이 걸리는 이유를 파악하려고합니다.이 간단한 경우 시간 범위 내에서 더 빨리 행을 검색하는 방법은 무엇입니까?
나는 5 백만 이상의 행을 가진 하나의 데이터베이스 테이블을 가지고 있습니다.
FooTimestamp 열에 DateTimeOffset 유형 인 비 고유 한 비 클러스터형 인덱스가 있습니다.
시간 범위 내에서 일부 행을 검색하려고하면 2 분 이상 걸립니다.
DECLARE @since datetimeoffset
DECLARE @before datetimeoffset
SET @since ='2013-03-20 00:00:00 +02:00'
SET @before ='2013-03-27 00:00:00 +02:00'
SELECT *
WHERE ([FooTimestamp] >= @since AND [FooTimestamp] <= @before)
질문 (내가 다시 실행하면 내가 추측, MS-SQL 서버 2008의 캐싱 기능을 상대적으로 빨리 때문이다) : 그것은 수백만 개의 레코드를 갖는 테이블에서 행을 검색하는 올 때, 쿼리 결과를 더 빠르게 얻으려면 어떻게해야합니까? (이와 같은 간단한 쿼리의 경우 2 분이 너무 많음)
인덱스가 조각화되어 있습니까? 쿼리 계획이란 무엇입니까? – Paparazzi
'FooTimestamp'의 인덱스를 클러스터링 할 수 있습니까? – muhmud
아니오; 해당 열이 100 % 고유 값을 가지고 있는지 확인하십시오. – pencilCake