MySQL (Aurora)/DB Tuning
인덱스 힌트
tensaidba
2024. 10. 7. 10:24
- 원인
분포도에 따라 실행계획이 변하는 현상 발생
user 의 개수가 단일이 아닌 복수개의 경우 reg_date 기준으로 실행계획 생성
- 쿼리
select
ifnull(acb.score, 0)
from
tb_abc_log abc
where
abc.user = #user
and user.reg_date > DATE_SUB(NOW(), INTERVAL 1 DAY)
order by
user.reg_date desc
limit 1
- 해결방법
- 인덱스 힌트로 실행계획 고정
USE_INDEX(ix_abc_log_user)
select
ifnull(acb.score, 0)
from
tb_abc_log abc USE_INDEX(ix_abc_log_user)
where
abc.user = #user
and user.reg_date > DATE_SUB(NOW(), INTERVAL 1 DAY)
order by
user.reg_date desc
limit 1