Josh 성장일기
Published 2023. 7. 25. 14:14
IN, EXISTS 의 차이 DB/MySQL

- 초보개발자로써 혼자서 공부한 내용을 정리삼아 블로그에 작성하니 잘못된 점 바로잡아주시면 감사하겠습니다! -

 

이번 업무중에 join을 활용하여 데이터를 가져오는 SQL을 작성하던 중 사수님께서 공부로 JOIN을 사용하지 않고

IN, EXISTS 을 사용하여 SQL 을 작성해보라는 말씀을 하여 기록을 남기기 위해 글을 작성합니다.

 

IN 과 EXISTS

IN

- 실행순서 : EXISTS 쿼리 -> 메인쿼리 순서

- 집합 내부에 값이 존재하는지 여부 확인

- 존재하는 데이터값을 비교하기 때문에 EXISTS 절보다 속도가 느림

WHERE 메인쿼리테이블의 컬럼명 IN(SELECT 컬럼명 FROM 테이블 WHERE 조건절)

위와 같은 형태로 작성하고 설명하자면 서브쿼리 데이터들중에 메인쿼리 테이블의 데이터에서 존재하는 ROW 만 추출

 

EXISTS

- 실행순서 : 메인쿼리 -> EXISTS 쿼리 순서

- 결과로 TRUE, FALSE 반환

- 조건에 해당하는 ROW의 존재 유무 확인 이후 수행 x

- 보통 IN 보다는 EXISTS 의 성능이 더 좋음

- 테이블 간의 결과를 어떤 값이 존재하는지 확인하는 경우에 사용

WHERE EXISTS(SELECT 컬럼명 FROM 서브테이블 WHERE 메인테이블.컬럼명 = 서브테이블.컬럼명)

 

NOT 

IN, EXISTS 둘다 앞에 NOT 을 붙이게 되면 반대로 조건에 맞지 않는 ROW 들만 출력하게 됩니다.

'DB > MySQL' 카테고리의 다른 글

Lock 과 Index  (0) 2024.08.12
JOIN 에서 WHERE절과 ON절의 차이  (2) 2024.01.30
profile

Josh 성장일기

@JoshDev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그