본문 바로가기

프로그래밍/MSSQL

[MSSQL] WITH INDEX 인덱스 강제 설정 (테이블 힌트)

반응형

 

 

 

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

 

 

 

 

 

 

반응형