부등호와 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 )
참고사이트
Mysql Query Between 과 >=, <= 성능 차이 비교 ( 더미데이터 50만 )
현재 친절한 SQL 튜닝을 읽고 있습니다. 그러던 중 Between And 과 Where 부등호 사이의 성능 차이가 있다는 말을 들었고 직접 Test를 진행했습니다.
velog.io
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=169726
WWW.PHPSCHOOL.COM
개발자 커뮤니티 1위 PHPSCHOOL.COM 입니다.
www.phpschool.com
https://devhood.tistory.com/249
MySQL에서 DATETIME 형식 데이터 고속 검색 방법
| MySQL에서 DATETIME 형식의 데이터를 고속으로 검색하기 MYSQL의 UNIX_TIMESTAMP 함수를 이용 INT 형으로 저장하여 DATETIME 형식보다 3 배 ~ 4 배(?) 고속화가능 | Memo 1.DATETIME 형의 경우 -----------..
devhood.tistory.com
'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 |