본문 바로가기

DB/Mysql

Mysql index에 대해서


mysql이 index를 어떻게 사용하는지 설명한다. 나중에 보고 자세히 정리해보쟈

How MySQL Uses Indexes


http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html


그리고 아래에서 보면 mysql에서 어떤 인덱스를 사용하면 좋을지 힌트를 줄 수 있는데 
http://dev.mysql.com/doc/refman/5.1/en/index-hints.html
힌트는 세가지가 있다. 

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)


USE (index_list)는 mysql이 select시에 오직 index_list에서 하나를 선택하여 사용할 것을 지정한다.  
IGNORE (index_list)는 index_list에 있는 index를 사용하지 말 것을 지정한다.
FORCE (index_list)는 USE와 동일하지만 테이블 스캔(table scan)이 가장 비싸 다는 힌트를 주므로써 
index_list와 비교해서 table_scan이 더 빠를지라도 주어진 index 중에 하나를 사용할 것을 지정한다.