티스토리 뷰

🌈 MsSql

not exists(select 1 VS select *) 차이점

James Wetzel 2023. 3. 24. 15:44
select *
from tir.dbo.table as pplh with(nolock)
where pplh.print_no = 1152012
and not exists (
	select 1
	from table2 as pplh2 with(nolock)
	where pplh2.print_no = 1152013
	and pplh2.mng_no = pplh.mng_no
)

 

NOT EXISTS 절에서는 SELECT *와 SELECT 1 사이에 기능적인 차이가 없습니다. 

NOT EXISTS는 서브쿼리에 일치하는 행이 있는지 여부를 확인하는 데만 관심이 있기 때문입니다. 

즉, 서브쿼리의 결과가 있으면 NOT EXISTS는 거짓이고 결과가 없으면 참입니다.

SELECT *와 SELECT 1의 차이는 다음과 같습니다:
SELECT *: 모든 열을 선택합니다. 

이는 일반적으로 데이터를 검색할 때 사용되지만, 

NOT EXISTS와 같은 상황에서는 불필요한 데이터를 가져올 수 있습니다.

SELECT 1: 상수 값 1을 선택합니다. 

이는 서브쿼리의 결과가 있는지 확인하기 위한 것으로, 

성능상의 이점이 있을 수 있습니다.

실제로 대부분의 최적화 도구는 NOT EXISTS와 같은 상황에서 

SELECT *와 SELECT 1 사이의 차이를 자동으로 인식하고 최적화를 수행합니다.

 

따라서 성능 차이는 없거나 미미할 수 있습니다. 

그러나 SELECT 1을 사용하는 것이 좋은 습관이며, 의도를 명확하게 표현하는 데 도움이 됩니다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함