Range checked for each record (index map: 0x2)

less than 1 minute read

explain 시 “Range checked for each record (index map: 0x{숫자})” 의 모양으로 나오는데, 웃긴게  analyze table {TABLE} 하면  “Using where; Using join buffer (Block Nested Loop)” 처럼 바뀌는 경우가 있다.

우선 버그 같고… 발생 조건?은

조인 조건에 날짜 범위 검색 +  in 처리. “ pd.r_idx in(ppd.r_idx,0)  and pd.pr_idx=ppd.pr_idx and pd.pd_st_date <= concat(use_date,’ 23:59:59’)  and pd.pd_ed_date >= concat(use_date,’ 00:00:00’) “ 처럼 할 경우 높은 빈도로 “Range checked for each record (index map: 0x{숫자})” 가 발생된다.


  • Range checked for each record (index map: 0x{숫자})
  • 문제는 속도가 아주 느려진다. 간단한 쿼리인데도 0.2초는 기본으로 잡아 먹는다.
  • 날짜 범위 검색 +  in 으로 검색시 인덱스를 잘못 처리하는 것 같다.

🔗original-link

Updated: