반응형
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를 사용하지 않는게 좋다
반응형
'SQL > MySQL' 카테고리의 다른 글
MySQL ALTER로 테이블 컬럼 삭제방법 (0) | 2022.01.04 |
---|---|
MySQL 테이블에 ALTER로 컬럼 추가방법 (0) | 2022.01.04 |
MySQL 테이블별 컬럼명 조회방법(복사 붙여넣기 가능하게) (0) | 2021.09.24 |
MySQL 컬럼명 코멘트로 테이블 찾는 방법 (0) | 2021.09.24 |
MySQL 컬럼 값으로 정렬하는 방법 (0) | 2021.07.05 |
댓글