나는 작거나 큰 연산자를 사용하여 테이블을 쿼리 할 때 SQL Server 인덱스가 제대로 작동하지 않는다는 것을 발견했습니다.보다 작거나 큰 SQL 서버의 인덱스에 대한 연산자 문제
SELECT * TestTable FROM WHERE iCount = 10 :이하여 테이블을 쿼리 지금
Column Name, column type, primary Key, index iID, int, yes, cluster index iCount, int, no, non-cluster index name, nvarchar(255), no, no index
:
내가이 같은 단지 2 열이있는 간단한 테이블 (TestTable)을 말해봐
아주 좋겠지 만 SQL Server는 iCount 열에 대해 비 클러스터 인덱스를 사용하여 결과를 검색합니다.
그러나, 나는 이것에 의해 테이블을 조회 할 경우 :
IID를위한 클러스터 인덱스를 통해 인덱스 스캔을 할 것입니다SELECT * TestTable FROM WHERE iCount < 10,
는 SQL 서버 결과를 검색하십시오.
SQL Server가 쿼리에서 작거나보다 큰 연산자를 사용할 때 적절한 인덱스를 사용할 수없는 이유가 궁금합니다.
클러스터 된 인덱스를 '(iCount, iID)'** 순으로 변경하는 것이 좋습니다 **. – onedaywhen
또는 기본 키의 특성을 변경할 필요가없는 iCount의 클러스터되지 않은 인덱스에 'name'을 포함 된 열로 추가 할 수 있습니다. – hatchet