Database/MySQL

Mysql Index HInts

BUST 2018. 7. 24. 22:58

Mysql Index Hints

Mysql를 사용을 하다보면 원하는 인덱스가 아니고 다른 인덱스를 사용하여 쿼리 성능이 느린 경우가 있다. 이때 Mysql에서 제공하는 Index Hints를 쓰면 강제적으로 할당한 Index를 이용하여 쿼리가 실행이 된다. 하지만 JPA(hibernate)에서 사용이 불가능하기 때문에 JdbcTemplate 등을 이용하여 Native Query로 활용해야 된다.

사용방법

tbl_name [[AS] alias] [index_hint_list]

index_hint_list:
    index_hint [index_hint] ...

index_hint:
    USE {INDEX|KEY}
      [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list])
  | IGNORE {INDEX|KEY}
      [FOR {JOIN|ORDER BY|GROUP BY}] (index_list)
  | FORCE {INDEX|KEY}
      [FOR {JOIN|ORDER BY|GROUP BY}] (index_list)

index_list:
    index_name [, index_name] ...
  • USE INDEX 키워드를 이용하여 인덱스를 사용을 지정할수도 있고, IGNORE를 이용하여 무시하는 방법도 있다.

예제

SELECT * FROM table1 USE INDEX (col1_index,col2_index)
  WHERE col1=1 AND col2=2 AND col3=3;

SELECT * FROM table1 IGNORE INDEX (col3_index)
  WHERE col1=1 AND col2=2 AND col3=3;

Reference


'Database > MySQL' 카테고리의 다른 글

Group By 최대값을 가진 Row를 추출하는 쿼리  (0) 2018.09.03
Mysql Query Plan  (0) 2018.07.24
인덱스 설계에 필요한 선택도와 카디널리티  (0) 2018.06.11
Group By 쿼리의 활용  (0) 2018.06.09
MySQL 기본 Query 정리  (0) 2018.02.11