[MSSQL] 인덱스 힌트 사용법 (Index Hint)

SQL Server에서 쿼리 문의 실행 계획을 보면 잘못된 인덱스를 타서 조회 속도가 느린 경우가 간혹 발생한다. 이럴 경우 인덱스 힌트를 강제로 부여하여 실행 계획을 바꾸면 조회 속도가 빨라지는 경우가 있다. 인덱스 힌트를 강제로 부여하는 방법은 권장하는 방법이 아니며 옵티마이저에 의한 최적의 실행 계획으로 쿼리문이 실행되도록 하는 것이 좋다.

 

목차
  1. 인덱스 힌트 사용법
  2. 쿼리문 실행 계획 보는 법

 

인덱스 힌트 사용법

SELECT *
  FROM emp WITH (INDEX(emp_idx01))
 WHERE hiredate BETWEEN '1981-01-01' AND '1981-12-31'

 

FROM [테이블명] WITH (INDEX([인덱스명]))

 

 

인덱스 힌트를 사용했을 경우와 사용하지 않았을 경우 쿼리문 실행 계획이 달라지는 것을 확인할 수 있다. 인덱스 힌트를 사용하지 않으면 옵티마이저가 최적의 실행 계획을 만들어서 실행한다. 가끔 가다가 옵티마이저가 잘못된 인덱스를 타는 경우가 있는데 그때 인덱스 힌트를 사용하며 평상시에는 사용하지 않는 것이 좋다.

 

/* WITH (INDEX(emp_idx01))와 동일함 */
SELECT *
  FROM emp WITH (INDEX = emp_idx01)
 WHERE hiredate BETWEEN '1981-01-01' AND '1981-12-31'
;

/* WITH (NOLOCK)과 함께 사용하는 경우 */
SELECT *
  FROM emp WITH (NOLOCK, INDEX(emp_idx01))
 WHERE hiredate BETWEEN '1981-01-01' AND '1981-12-31'
;

/* 인덱스 힌트를 여러개 사용하는 경우 */
SELECT *
  FROM emp WITH (INDEX(emp_idx01, emp_idx02))
 WHERE hiredate BETWEEN '1981-01-01' AND '1981-12-31'

 

WITH (INDEX([인덱스명]))와 WITH (INDEX = [인덱스명])은 동일한 문법이다.

 

쿼리문 실행 계획 보는 법

 

쿼리 문의 실행 계획을 보는 방법은 SSMS(SQL Server Management Studio) 툴에서

실행 버튼 옆 예상 실행 계획 표시 (Ctrl + L) 버튼을 누르면 실행 계획을 확인할 수 있다.

 

 

[MSSQL] 인덱스 생성, 변경 방법 (Create Index)

SQL Server에서 인덱스를 생성하기 위해서는 CREATE INDEX 문을 사용한다. 인덱스를 생성한 후 변경하는 명령은 없으며 인덱스를 삭제 후 다시 생성하는 방법을 사용해야 한다. 인덱스는 클러스터형과

gent.tistory.com

 

[MSSQL] 인덱스 조회 방법 2가지 (sp_helpindex)

SQL Server에서 테이블 인덱스 정보를 조회해야 할 경우가 있다. sp_helpindex 시스템 저장 프로시저와 sys.indexes 시스템 테이블을 활용하면 인덱스 정보를 쉽게 조회할 수 있다. 아래의 2가지 방법을 사

gent.tistory.com

 

댓글

Designed by JB FACTORY