쿼리 유형 및 인덱스
열에 인덱스를 만들지 여부를 결정할 때는 먼저 해당 열이 쿼리에서 어떻게 사용되는지 고려해야 합니다. 다음 표에서는 인덱스를 만들면 유용한 쿼리 유형에 대해 설명합니다.
[!참고] 이 표의 예는 AdventureWorks 예제 데이터베이스를 기반으로 합니다. SQL Server Management Studio 에서 이 예를 실행하는 경우 실제 실행 계획을 표시하여 쿼리 최적화 프로그램이 선택한 인덱스를 볼 수 있습니다. 자세한 내용은 방법: 실제 실행 계획 표시를 참조하십시오.
다음 중 하나의 열 조건자가 있는 쿼리 | 쿼리 설명 및 예 | 고려할 인덱스 |
---|---|---|
특정 값에 정확히 일치 |
쿼리에서 WHERE 절을 사용하여 특정 값으로 열 항목을 지정하는 정확히 일치하는 항목을 검색합니다. 예를 들면 다음과 같습니다.
|
|
IN (x,y,z) 목록의 값에 정확히 일치 |
지정한 값 목록의 값에 정확히 일치하는 항목을 검색합니다. 예를 들면 다음과 같습니다.
|
|
값 범위 |
쿼리에서 두 값 사이의 값을 갖는 항목을 지정하는 값 범위를 검색합니다. 예를 들면 다음과 같습니다.
또는
|
|
테이블 간 조인 |
조인 조건자를 기준으로 테이블에서 다른 테이블의 행과 일치하는 행을 검색합니다. 예를 들면 다음과 같습니다.
|
|
LIKE 비교 |
'abc%'와 같은 특정 문자열로 시작하는 일치하는 행을 검색합니다. 예를 들면 다음과 같습니다.
|
|
정렬 또는 집계 |
암시적 또는 명시적 정렬 순서 또는 집계(GROUP BY)를 지정해야 합니다. 예를 들면 다음과 같습니다.
|
정렬 또는 집계 열의 비클러스터형 또는 클러스터형 인덱스 열을 정렬할 때는 열의 ASC 또는 DESC 순서를 지정하십시오. |
PRIMARY KEY 또는 UNIQUE 제약 조건 |
삽입 및 업데이트 작업에서 새 인덱스 키 값과 중복되는 값을 검색하여 PRIMARY KEY 및 UNIQUE 제약 조건을 적용합니다. 예를 들면 다음과 같습니다.
|
제약 조건에 정의된 열의 비클러스터형 또는 클러스터형 인덱스 |
PRIMARY KEY/FOREIGN KEY 관계의 UPDATE 또는 DELETE 작업 |
열이 CASCADE 옵션을 사용 또는 사용하지 않고 PRIMARY KEY/FOREIGN KEY 관계에 참여하는 업데이트 또는 삭제 작업에서 행을 검색합니다. |
외래 키 열의 비클러스터형 또는 클러스터형 인덱스 |
선택 목록에는 있지만 조건자에는 없는 열 |
선택 목록에는 있지만 검색 및 조회에는 사용되지 않는 하나 이상의 열을 포함합니다. 예를 들면 다음과 같습니다.
|
INCLUDE 절에 |