실행하는 데 오랜 시간이 걸리지 만 동일한 테이블에서 count (*)를 실행하는 간단한 select 문이 있습니다. 동일한 WHERE 절이 1 초 이내에 돌아옵니다.매우 느리게 실행되는 단순 선택 쿼리이지만 동일한 테이블에서 매우 빠르게 실행되는 카운트 (*) 선택
이 쿼리는 아주 긴 시간 동안 실행(1 시간 +가) :
SELECT col1
, col2
, col3
FROM Table
WHERE RowInsertDate >= @SomeStartDate
AND RowInsertDate < @SomeEndDate
그러나이 쿼리 초 미만에 돌아 오면 :
SELECT count(*)
FROM Table
WHERE RowInsertDate >= @SomeStartDate
AND RowInsertDate < @SomeEndDate
표는 3400 만 개 행이, 기본 키에 대해 ID 열과 지리적 영역 (북, 남, 동, 서) 열이 사용됩니다. 'RowInsertDate'열은 행이 테이블에 삽입 된 날짜입니다. 위 쿼리에 대한 예상 결과는 각각 'no rows'및 '0'입니다.
이 테이블의 클러스터 된 인덱스는 (ID, geoRegion) ASC입니다. 또한이 테이블에는 RowInsertDate ASC에 클러스터되지 않은 인덱스가 있습니다.
여기에서 어디로 가야할지 모르겠습니다. 누구도 전에 이것에 빠졌습니까?
볼륨 물건 일 수 있습니다. 얼마나 많은 행이 반환됩니까? – Paparazzi
이것은 실행 계획이 당신과 우리를 도울 것입니다. 또한 누구나 col1, col2를 인덱스에 연관시킬 수있는 방법이 없습니다. 우리는 인덱스가 어떤 컬럼인지 또는 색인에 포함되지 않았는지 모르기 때문에 그 값이 맞는지 또는 잘못되었는지 전혀 모릅니다. – Matt
두 쿼리가 서로 다르며 다른 실행 계획을 초래합니다. – TheGameiswar