728x90
320x100
어떤 선배 개발자는 WHERE 1 = 1 사용해도 된다고 하고 어떤 개발자는 지양해야 한다고 말한다. 도대체 진실은 뭘까?
[WHERE 1 = 1 을 사용하는 이유]
1. 쿼리 짤 때 편하다
- 여러 and 조건들을 넣었다가 뺐다가 해야 할 경우가 많은데 아예 조건절에 where 1 = 1 을 넣고 아래 and 조건만 주석처리 혹은 추가하면서 작업하면 되니까 쿼리 짤 때 솔직히 편하다.
2. 동적 쿼리문을 만들 때 편하다
- 동적으로 조건을 가져와 동적 쿼리문을 만들 때 어떤 컬럼이 조건으로 와도 무조건 AND 조건으로 만 붙이면 되니까! 동적 쿼리문을 짤 때도 편함!
3. 실행계획에 최적화 됨!
- 이건 검색해보면서 알게 된건데 대부분의 데이터베이스 서버는 실행 계획을 최적화 할 때, 쿼리의 WHERE 절을 분석하여 인덱스를 사용할지 여부 등을 결정한다고 함. 이 때 WHERE 1=1 을 사용하면 WHERE절이 있음을 알리면서도 실제로 어떤 조건도 만족하지 않음으로 실행 계획이 최적화 된다고 한다.
[WHERE 1 = 1 사용을 지양하는 이유]
DELECT FROM TABLE
<if test="id != null and id != undefined and id != """>
WHERE ID = #{id}
</if>
- 이런식으로 DELECT 구문을 동적으로 짠다고 가정했을 때 id값이 Null이라면 테이블을 통째로 삭제하는 격이 되버린다.
- 이렇게 해서는 안되겠지만 어쨌든 위험성이 커지는 것은 당연함
그래서?
개인적인 생각으로는 SELECT 문에서는 유용하게 쓸 것 같고
DELECT 문에서는 사용을 하지 않도록 해야 할 것 같음.
출처- https://alisyabob.tistory.com/495
where 1=1 쓰는 이유
where 1=1 쓰는 이유 알아보기 Where 1=1 이란? 이 구문은 기본적으로 아무런 조건 없이 모든 레코드를 선택하는 것과 같은 결과를 반환하지만, 다른 조건절을 추가하기 용이하도록 구문을 사용합니
alisyabob.tistory.com
https://katfun.tistory.com/entry/SQL-WHERE-1-1
[SQL] WHERE 1 = 1
업무 중 마주한 내용에 대해 추가적으로 알아보고자 공부하고 작성하였습니다. 이미 작성된 쿼리를 보다 보면 이런 내용을 많이 볼 수 있습니다. select * from TEST_TABLE a where 1 = 1 and a.name is not null a
katfun.tistory.com
728x90
320x100
'💻 하나씩 차곡차곡 > DB (SQL)' 카테고리의 다른 글
[디비에버(DBeaver)] Public Key Retrieval is not allowed 에러 해결 방법 (0) | 2024.03.27 |
---|---|
[MySQL] 설치하기 MAC(맥북) Ver (0) | 2024.03.27 |
[Oracle/오라클] 날짜형식 체크하는 방법 3가지 (0) | 2024.01.19 |
오라클 ""(쌍따옴표) VS '' (홑따옴표) (0) | 2023.12.06 |
[Oracle/오라클] INSTR() 이란? (0) | 2023.10.31 |