당신은 할 수 없습니다 인덱스 SQL Server 2000에서 비트 필드, 당시 온라인에 표시되면서 :
비트
정수 데이터 유형 1, 0 또는 NULL.
비고
bit 유형의 열 은 인덱스를 가질 수 없습니다.
예, 수백만 개 중 소수의 행만있는 경우 색인이 도움이 될 것입니다. 하지만이 경우에 그렇게하려면 컬럼을tinyint .
참고 : Enterprise Manager에서는 비트 열에 인덱스를 만들 수 없습니다. 원하는 경우 비트 열에 수동으로 인덱스를 만들 수 있습니다.
CREATE INDEX IX_Users_IsActiveUsername ON Users
(
IsActive,
Username
)
그러나 SQL Server 2000은 실제로 이러한 인덱스를 사용하지 않습니다. 인덱스가 완벽한 후보가 될 쿼리를 실행합니다. 예를 들면 다음과 같습니다.
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
SQL Server 2000은 인덱스가 존재하지 않는 것처럼 대신 테이블 스캔을 수행합니다. 열을 tinyint SQL Server 2000으로 변경 하면 인덱스 검색 수행 . 또한 다음과 같은 다루지 않는 쿼리 :
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
색인 검색을 수행 한 다음 책갈피 검색을 수행합니다.
SQL Server 2005는 비트 열의 인덱스를 제한적으로 지원합니다. 예를 들면 :
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
커버링 인덱스를 통해 인덱스 검색이 발생합니다. 그러나 보장되지 않는 경우 :
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
인덱스 검색에 이어 책갈피 검색이 발생하지 않으며, 인덱스 검색을 수행 한 후 책갈피 검색을 수행하는 대신 테이블 스캔 (또는 클러스터 된 인덱스 스캔)을 수행합니다.
실험 및 직접 관찰에 의해 확인되었습니다.