부등호와 Between 을 실행하면, Where을 이용한 부등호 비교 조회가 더 빠르다.
왜?
CPU Cycle 을 적게 소모했기 때문이다.
천만건이 들어있는 테이블 아래와 같이 카운팅하는 쿼리를 작성해 실행했을 때,
[x BETWEEN $1 AND $2] -> 평균 4.118333 초
[x >= $1 AND x <= $2] -> 평균 3.442857 초
시간이 소요되었다고 한다.
두 개 쿼리의 실행계획이 동일했고, 모든 데이터가 Buffer pool에 cache(Warming up)된
상태에서 실행했기 때문에 상태는 거의 동일했다고 보여진다.
그리고 하나 더 알게 된게,
MySQL에서 DATETIME 형식의 데이터를 고속으로 검색할 때는
UNIX_TIMESTAMP 함수를 이용하면 DATETIME 형식보다 3배~4배(?) 고속화가 가능하다.
1.DATETIME 형의 경우
-----------------------------------------------------
SELECT * FROM test_datetime
WHERE date between '2013-01-01' and '2013-06-30';
처리 결과 ( 5.20 sec )
2.INT 형의 경우
-----------------------------------------------------
SELECT * FROM test_unixtime
WHERE date_unixtime between 1356966000 and 1372518000;
처리 결과 ( 1.64 sec )
참고사이트
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=169726
https://devhood.tistory.com/249
'Database' 카테고리의 다른 글
[Mysql] on duplicate key update (0) | 2023.08.24 |
---|---|
[MySQL] 테이블 생성문에 timestamp & index사용하기 (0) | 2022.11.28 |
슬레이브(Slave)란? (0) | 2022.11.24 |
MySQL 인덱스 (0) | 2022.09.02 |
쿼리 Query 최적화 및 튜닝 (0) | 2022.08.23 |