LeetCode 사이트를 통해서 SQL 문제를 종종 푸는 편이다.
이 사이트의 좋은 기능 중 하나로, 다른 사람들이 작성한 코드를 실행 속도와 함께 내가 작성한 코드와 비교를 해준다.

위 사진처럼 내가 작성한 코드의 실행 속도를 바탕으로 문제를 해결한 사람들의 코드 중에 어느 정도의 위치에 있는지 지표를 나타내어준다. 근데 이 그래프를 보면 내가 작성한 코드가 너무 느린 것처럼 보이는 것이었다. 속도가 빨랐던 다른 사람들의 코드를 비교해보니 나는 BETWEEN을 활용했고, 다른 이는 부등호로 문제를 풀었던 차이 밖에 없었다.

between 구문만 부등호를 이용하여 코드를 재제출해봤더니 300ms나 줄었다!
설마 between과 부등호 간 인덱스 탐색 과정에서 큰 차이가 있는걸까? 라는 의구심이 들었고, 여러 글들을 찾아보았다.
출처: https://devjhs.tistory.com/402 [키보드와 하루:티스토리]
[oracle] BETWEEN AND - 범위에 있는 값 가져오기
1. BETWEEN AND - 역할컬럼에서 BETWEN AND 사이에 있는 값을 가져오는 역할 ◈ 구문형식 컬럼 BETWEEN 값1 AND 값2 2. BETWEEN AND - 기본 테이블◈ TEST_TABLE_ONE IDX NAME AMT ID TEL1 테스트1 1000 test1 2 테스트2 2000 test2
devjhs.tistory.com
이유는 cpu cycle 때문이라고 합니다.
즉 검색 하는 시작점이 다르기 때문이며 DB도 당연하게 CPU 연산으로 속도 차이가 나기 때문이랍니다 !
출처: http://www1.cikorea.net/bbs/view/tip?idx=23316&lists_style=
between VS 부등호 연산 승자는?
얼마나 차이 나는지 가끔 궁금했는데 찾아보니 이렇군요. 날짜 계산을 위한 함수. 그냥 AND 조건 연산. 당연히 날짜는 날짜로 계산해야지! 라고 생각 했는데 예상을 뒤엎고 결과는 between 보다
www1.cikorea.net
The query engine converts between into >= and <= (take a look at the query plan) so in practise they're identical and in theory >= <= is faster because the engine won't have to translate. Good luck noticing a difference though.
Compare performance difference of T-SQL Between and '<' '>' operator?
I've tried searching through search engines,MSDN,etc. but can't anything. Sorry if this has been asked before. Is there any performance difference between using the T-SQL "Between" keyword or using
stackoverflow.com
명확하게 무엇 때문에 속도에 있어서 차이가 있다라고 아는 사람이 얼마 없는 것 같다. 대략적인 추론으로는 단순히 between을 부등호로 변환하는데 소요되는 시간이 더 추가될 뿐? cpu cycle 때문이다? 정도로만 알아내었다.
물론 dbms 종류에 따라서도 속도의 차이가 있겠지만, 앞으론 between보단 부등호를 활용하는 습관을 지녀야겠다!
'Database' 카테고리의 다른 글
| SQL 쿼리 성능 최적화 방법 (1) | 2024.06.28 |
|---|---|
| [SQL] JOIN에서 WHERE과 ON 간 필터링 순서차이 (0) | 2024.02.13 |
| mysql로 문제 풀 때 노하우 모음 (계속 추가 예정) (1) | 2023.12.10 |
| [데이터베이스] 23-2 데이터베이스 정리 및 MYSQL TUTORIAL 실습(2) (0) | 2023.09.25 |
| [데이터베이스] 23-2 데이터베이스 정리 및 MYSQL TUTORIAL 실습(1) (1) | 2023.09.25 |