WHERE와 조건식
2026년 8월 28일
WHERE와 조건식
WHERE는 행 하나하나에 대해 참/거짓을 판정해 남길지 정한다. MongoDB 쿼리 연산자의 필터 JSON과 같은 자리다.
비교 연산자
SQL
범위 · 목록 · 패턴
SQL
| 패턴 | 인덱스 |
|---|---|
'TSM%' | 사용 — B-tree에서 접두사는 붙어 있다 |
'%TSM' / '%TSM%' | 못 씀 → 풀 스캔(Full Scan) |
%검색어%가 필요하면 그건 SQL이 아니라 전문 검색의 일이다 (BM25).
논리 결합과 우선순위
SQL
AND가 OR보다 먼저 묶인다. 섞을 때는 괄호를 반드시 친다.
SQL
NULL은 =로 비교할 수 없다
SQL
이유는 NULL과 3값 논리에서 다룬다. SQL 초보가 가장 많이 틀리는 지점이다.
EXISTS와 IN
SQL
EXISTS는 하나만 찾으면 즉시 멈춘다. 보통 더 빠르다.NOT IN은 서브쿼리 결과에NULL이 하나라도 있으면 전체가 0건이 된다.NOT EXISTS가 안전하다.
인덱스를 못 쓰게 만드는 조건
SQL
열은 왼쪽에 그대로 두고, 가공은 오른쪽 값에서 한다. 이게 인덱스를 살리는 원칙이다 (인덱스(Index)).
Mermaid스크롤로 확대 · 드래그로 이동
한 줄 정리
WHERE는 행 필터이고, NULL은 IS NULL로, 열에는 함수를 씌우지 않는다가 두 개의 철칙이다.
관련
- SELECT 문법
- NULL과 3값 논리
- 서브쿼리
- 인덱스(Index)
- B-tree
- MySQL EXPLAIN 읽기
- MongoDB 쿼리 연산자