Mysql 에서 날짜형 검색에 대한 where의 비교방식에 의한 Explain 차이

  • Mysql 에서 날짜형 검색에 대한 where의 비교방식에 의한 Explain 차이
  • 구조
    • REQUEST_TIME는 DATETIME 형으로 INDEX(IDX_REQUEST_TIME)가 설정되어있음
  • 예제 쿼리
    • EXPLAIN SELECT
      DEST_PHONE T_PHONE
      ,REQUEST_TIME T_DATE
      ,MSG_BODY T_MSG
      FROM uds_log
      WHERE REQUEST_TIME BETWEEN '2009-10-01 00:00:00' AND '2009-10-01 23:59:59'
      • 또는 WHERE REQUEST_TIME BETWEEN CONVERT('2009-10-01 00:00:00' , DATETIME) AND CONVERT('2009-10-01 23:59:59' , DATETIME)
        똑같은 결과
    • EXPLAIN SELECT
      DEST_PHONE T_PHONE
      ,REQUEST_TIME T_DATE
      ,MSG_BODY T_MSG
      FROM uds_log
      WHERE REQUEST_TIME LIKE '2009-10-01 %'
  • 결과
    • id select_type table type possible_keys key key_len ref rows Extra
      1 SIMPLE uds_log range IDX_REQUEST_TIME IDX_REQUEST_TIME 8 \N 832 Using where
    • id select_type table type possible_keys key key_len ref rows Extra
      1 SIMPLE uds_log ALL IDX_REQUEST_TIME \N \N \N 1277536 Using where
  • 분석
    • DATETIME 형태를 검색할 때는 RANGE 검색이 되도록하는 게 좋다.
    • LIKE 로 검색할 경우 ALL로 모든 row가 검색되는 결과가 되버린다.
  • 마무리
    • 문자열 비교가 아니라면 LIKE는 쓰지말자.
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.11
5.12
5.13
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1