본문 바로가기
SQL/MySQL

MySQL Force Index 써야 하는 상황 / 쓰면 안되는 상황

by wakestand 2021. 9. 24.
반응형

MySQL에서 조회 시 Explain을 사용하면

아래 쿼리가 인덱스를 사용하는지 사용하지 않는지

확인이 가능한데

 

분명 특정 컬럼에 인덱스를 생성해 두었음에도

Explain을 이용하여 확인 시

possible_keys 에는 나타나지만

key를 보면 인덱스를 사용하지 않아

type이 all이 떨어지는 경우가 있는데

 

이럴 때 FORCE INDEX(인덱스명) 을 사용하면

강제로 인덱스를 사용하게 만들 수 있다

 

따라서 FORCE INDEX를 사용하면

강제로 인덱스를 사용하게 할 수 있기 때문에

인덱스가 있을 경우 FORCE INDEX를 사용하는게

좋을까 안좋을까 이런 생각이 들 수 있는데

 

결론만 놓고 보자면

꼭 필요한 상황이 아닌 이상에야

FORCE INDEX는 사용하지 않는 것이 좋다

 

일단 DB 자체에서 조회 시

인덱스를 사용해야 빠를 경우 인덱스를 사용하고

그렇지 않을 경우에는 인덱스를 사용하지 않는데

 

이 말은 굳이 Force index를 쓰지 않아도

DB가 알아서 필요할 때 사용한다는 말이고

 

작성해 놓은 쿼리는 주기적으로

관리하는 인력이 계속 변경되기 때문에

(각종 사유로 인한 퇴사 등..)

 

해당 테이블의 컬럼이 변경되거나

혹은 인덱스가 변경되게 되면

FORCE INDEX를 사용하는 쪽에

에러가 발생할 수 있기 때문에

 

반드시 INDEX를 타야하는 상황 외에는

가급적이면 FORCE INDEX를 사용하지 않는게 좋다

반응형

댓글