• 원인

      분포도에 따라 실행계획이 변하는 현상 발생

     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

'MySQL (Aurora) > DB Tuning' 카테고리의 다른 글

mysql 실행계획 시 유의점  (0) 2024.12.03
형 변환 튜닝  (2) 2024.10.02

+ Recent posts