728x90
SQL 쿼리를 보다 보면 WHERE 1=1
을 사용하는 경우를 종종 볼 수 있습니다.
예를 들어, 다음 두 쿼리는 같은 결과를 반환합니다.
SELECT * FROM user;
SELECT * FROM user WHERE 1=1;
그렇다면 굳이, WHERE 1=1
을 추가하는 이유는 무엇일까요?
WHERE 1=1
을 사용하는 이유
1. 동적 쿼리를 쉽게 조합하기 위해
WHERE 1=1
을 사용하면 동적으로 조건을 추가할 때 불필요한 WHERE
처리 로직을 줄일 수 있습니다.
예를 들어, Python에서 검색 필터를 추가하는 코드가 있다고 가정을 하겠습니다.
query = "SELECT * FROM user WHERE 1=1"
if username:
query += f" AND username = '{username}' "
if email:
query += f" AND email = '{email}' "
WHERE 1=1
이 있으면 첫 번째 조건이 무엇이든 신경 쓰지 않고AND
를 붙일 수 있습니다.- 만약
WEHRE 1=1
이 없다면 첫 번쨰 조건 앞에WHERE
을 추가하는 로직이 필요해집니다.
즉, WHERE 1=1
을 사용하면 동적 SQL을 쉽게 구성할 수 있어 코드가 더 깔끔해집니다.
2. 자동화된 SQL 생성에 유용함
SQL을 자동 생성하는 시스템(ex: ORM, BI도구 등)에서는 다양한 조건이 유동적으로 추가해야합니다.
- 특정 필터를 사용하지 않으면
WHERE
절이 아예 없어야 할 수도 있습니다. - 하지만
WHERE 1=1
을 넣어두면 조건을 추가하거나 제거할 때WHERE
을 신경 쓰지 않아도 됩니다.
3. 쿼리 최적화에 영향이 없음
WHERE 1=1
은 항상 True
이므로 SQL 실행 시 자동으로 무시됩니다.
즉, 실행 계획(Execution Plan)에 영향을 주지 않으며 성능 저하가 발생하지 않습니다.
결론
WHERE 1=1
은 동적 쿼리를 쉽게 조합할 수 있도록 도와줍니다.- 자동화된 SQL 생성 시 조건 추가/제거가 용이합니다.
- 실행 최적화에 영향을 주지 않으므로 성능 걱정 없이 사용할 수 있습니다.
따라서 WHERE 1=1
은 결과는 동일하지만, 동적 SQL을 작성할 때 유지보수성과 가동성을 높이는 좋은 기법입니다.
감사합니다,
728x90
반응형
'SQL' 카테고리의 다른 글
데이터 무결성 검증을 위한 SQL Test 작성법 (0) | 2025.03.26 |
---|---|
DB 쿼리가 느릴 때 확인해야 할 것 (0) | 2025.03.24 |
[SQL] IN 과 JOIN의 대한 궁금중 (0) | 2024.04.23 |
[SQL] Date Format 함수 (formatting parameter) (1) | 2024.03.28 |
[MYSQL] 함수 만들기 (FUNCTION) (0) | 2024.03.20 |