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