프로그래밍/MSSQL
[MSSQL] WITH INDEX 인덱스 강제 설정 (테이블 힌트)
초보개발자꽁쥐
2020. 2. 4. 20:25
반응형
WITH INDEX 인덱스 강제 설정
먼저, 인덱스에 대해 간단히 설명해보면
- 인덱스란 지정 칼럼을 기준으로 일종의 목차를 생성하는 것이다. (조회 성능 향상)
- MSSQL은 비용기반 옵티마이저를 사용한다.
비용 기반이란 데이터의 통계에 따라 실행계획이 세워지는 것
- 인덱스를 생성해놓은 테이블은 옵티마이저에서 자동으로 선택하여 인덱스를 사용한다.
(단, 특정 쿼리의 경우 인덱스가 정상적으로 사용되지 않을 수 있음)
이렇게 옵티마이저가 최적의 인덱스를 찾아 사영하지만, 가끔 엉뚱한 인덱스를 타거나 테이블을 풀스캔 하는 경우가 발생한다.
자 그럼 본격적으로 내가 원하는 인덱스를 강제로 설정해보자
FROM 테이블 뒤에 WITH (INDEX(인덱스명))을 사용하면 된다.
SELECT 칼럼 FROM 테이블 WITH (INDEX=인덱스명)
SELECT 칼럼 FROM 테이블 WITH (INDEX(인덱스명))
SELECT 칼럼 FROM 테이블 WITH (INDEX(인덱스명1,인덱스명2))
테이블 인덱스 확인
sp_helpindex '테이블명'
예제
1) 인덱스명 확인
sp_helpindex 'ggmouse'
2) 인덱스 강제로 설정
SELECT A.*
FROM table_ggmouse A WITH (INDEX(NX_table_ggmouse_age))
INNER JOIN table_ggmouse2 B ON A.age = B.age
반응형