요약
- Range 쿼리는 특정 범위의 데이터를 조회하는 쿼리다
- 비교 연산자, BETWEEN, LIKE, IN, NOT 조건 등이 있다
본문
비교 연산자
| 연산자 |
설명 |
>, < |
초과, 미만 |
>=, <= |
이상, 이하 |
BETWEEN A AND B |
A 이상 B 이하 (양 끝 포함) |
패턴 매칭
| 연산자 |
인덱스 사용 |
설명 |
LIKE 'prefix%' |
O |
접두사 매칭 |
LIKE '%suffix' |
X |
접미사 매칭 (full scan) |
집합 연산
IN (value1, value2, ...): 여러 값 중 하나
- IN 조건은 내부적으로 여러 개의
= 조건으로 변환되어 처리 되는 경우가 있고, 범위로 처리되는 경우도 있다.
NOT 조건
| 연산자 |
처리 방식 |
효율성 |
!=, <> |
두 개의 range로 분리 (< OR >) |
낮음 |
NOT IN |
여러 range로 분리 |
낮음 |
NOT BETWEEN |
두 개의 range로 분리 |
낮음 |
NOT LIKE |
full scan |
매우 낮음 |
IS NOT NULL |
range |
보통 |
NOT 조건은 대부분의 행을 반환하므로 옵티마이저가 full scan을 선택하는 경우가 많다.
참고