Range checked for each record (index map: 0x2)
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 으로 검색시 인덱스를 잘못 처리하는 것 같다.