• key_lenght 가 실제 인덱스 길이보다 짧다면 인덱스 정상적으로 안타는것
  • 실행계획 확인시 key_lenght도  말고 filterd 조건을 자세히 봐야한다
    • filterd  조건이 높을수록 인덱스를 정상적으로 탐색
    • filterd  낮을수록 남은 row가 많다는 뜻 인덱스를 정상적으로 안탐

 

filerd가 1이므로 나머지 99% 남았다는뜻 - 인덱스 확인 필요

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

인덱스 힌트  (0) 2024.10.07
형 변환 튜닝  (2) 2024.10.02
  • 원인

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

     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
  • 원인
    • mysql varchar와 int 조인시 형이 안맞아서 인덱스를 안타는 현상
  • 해결

1) 근본적인 해결

  표준화를 통한 테이블의 형 맞춤

2) 단기적인 해결

 인덱스를 타기위한 형변환을 통한 튜닝

 

  • 현상

  tb_apple 의 order_id(VARCHAR) 와 tb_pay 의 id(INT) 칼럼이 형이 틀려서 인덱스를 안타는 현상

  • 해결

SELECT * FROM 

FROM tb_voice voice
INNER JOIN tb_pay result ON voice.tid = result .id

LEFT JOIN adb.tb_apple apple ON apple.order_id = result.id

 

-> 

SELECT * FROM 

FROM tb_voice voice
INNER JOIN tb_pay result ON voice.tid = result .id

LEFT JOIN adb.tb_abc apple ON apple.order_id = CONVERT(result_info.id, CHAR)

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

mysql 실행계획 시 유의점  (0) 2024.12.03
인덱스 힌트  (0) 2024.10.07

+ Recent posts