본문 바로가기
컴퓨터관련/MS-SQL

MSSQL에서의 EXISTS와 IN의 사용 및 차이점

by 빛과 어둠사이 2020. 6. 5.
728x90
반응형
SMALL

오늘은 MSSQL에서의 EXISTS 와 IN의 사용방법

그리고 차이점에 대해서

정리를 해보고자 합니다.



1. 용어정리

우선 용어 및 연산자의 차이를

확인해보도록 하겠습니다.


IN 연산자의 경우에는

특정 테이블에 따른 값이 있는지,

데이터를 추출할 때 사용을 하는 것입니다.


EXISTS 연산자는 특정 테이블에 따른

값이 있는지 유무만을 확인하는 것입니다.



2. IN 연산자

우선 IN 연산자에 대해서

사용방법을 정리해보도록 하겠습니다.


IN연산자는 한개의 컬럼에 대해서

데이터가 있는지

검색을 해서 나타내주는 것입니다.


예제 쿼리를 확인해보도록 하겠습니다.


select * from test_member
WHERE ID IN (
'aaa', 'bbb','ccc','hhh'
)


위처럼 쿼리를 작성하였습니다.

그리고 실행을 하면

결과는 아래처럼 나오게 됩니다.



위와 같이 나오게 됩니다.

즉, 

id='aaa' or id='bbb' or id='ccc' or id='hhh'

위와 같은 조건으로 한 것과

동일하가도 보시면 되실 것 같습니다.




3. EXISTS 연산자

EXISTS 연산자의 경우에는

위에서 얘기한 것처럼

데이터가 존재하는지 유무만을 리턴해줍니다.


실제 사용 예제는 다음과 같습니다.


select * from test_member a
WHERE EXISTS 
(SELECT ID FROM test_member b where b.id = 'aaa' and a.id = b.id)


위와 같이 쿼리를 작성하였습니다.

그리고 실행을 하면

결과는 다음과 같이 나오게 됩니다.



위처럼 결과가 나와집니다.

즉, 서브쿼리를 넣어야만 하며

그곳에서 조건을 설정해주어야 합니다.





4. 차이점

이제 IN 연산자와 EXISTS 연산자의 차이점에 대해서

정리를 해보도록 하겠습니다.


우선 IN 연산자로 했을 때는

NULL이 있을 경우에도 FALSE로 리턴을 합니다.

그렇기 때문에 ISNULL 등의 함수를 이용하여

NULL에 대한 처리도 해주어야 합니다.

그리고 EXISTS 함수의 경우에는 NULL이면

TRUE로 리턴을 해줍니다.




그리고 두번째 차이로는 퍼포먼스.

즉, 성능에 차이가 있습니다.

IN 연산자의 경우에는 데이터가 있는지를

모두 확인하는 것입니다.

그리고 EXISTS 연산자의 경우,

존재 여부만을 확인을 합니다.

그렇기 때문에 성능은 EXISTS 연산자가

더욱 좋습니다.




저는 개인적으로는 IN 연산자를

EXISTS 연산자보다 더 많이 사용을 하긴 했습니다.

하지만 성능 측면에서 차이가 있기 때문에

이제는 가능하면 EXISTS 연산자를 이용하여

개발을 하도록 해보고 싶네요.





이번에는 SQL SERVER에서의 IN 연산자와

EXISTS 연산자의 사용방법 및

차이점에 대해서 정리를 해보았습니다.


필요에 따라서

편의에 따라서 사용을 해주시면 되실 것 같습니다.





이상으로 MS-SQL에서의 IN, EXISTS 연산자에 대한

설명 및 차이점이였습니다~



SQL 코딩의 기술:Effective SQL, 길벗

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음







728x90
반응형
LIST