개발 노트

IN 과 EXIST 본문

데이타베이스/MySQL

IN 과 EXIST

한츄 2023. 12. 26. 09:47

기본 개념

IN / EXIST :  조건에 부합하는 결과 찾기

NOT IN / NOT EXIST : 조건에 부합하는 결과 제외시키기

 

동작 방식의 차이

IN

  1. 서브쿼리를 먼저 검색한 후, 결과목록을 만듭니다.
  2. 그 다음 메인쿼리에서 하나의 row를 가져옵니다.
  3. row의 값이 1에서 가져온 IN 의 조건에 맞는지 확인한 다음 서브쿼리의 요소들 중 하나라도 일치한다면 row를 출력합니다.
  4. 2~3과정을 반복합니다.

EXIST

  1. 메인쿼리를 먼저 실행하여 출력되는 상위 row를 가져옵니다.
  2. 해당 row에 대해 서브쿼리를 실행 한 뒤, 서브쿼리에 일치하는지 확인합니다. 일치한다면 True가 되며 1번에 해당하는 row값이 출력됩니다.
  3. 1~2 과정을 반복합니다.

 

row의 수가 적으면 적을수록 두 방식의 차이는 거의 나타나지 않지만 많아질수록 IN은 성능저하가 심합니다.

 

NOT IN 과 NOT EXIST

NOT IN

IN의 경우 서브쿼리의 값 중에 일치하는 값이 하나라도 있으면 되지만, NOT IN의경우에는 서브쿼리의 모든 요소와 일치하지 않는지를 체크합니다.

 

NOT EXIST

EXIST는 서브쿼리 내에  값이 존재(true)하면 메인쿼리의 결과를 출력하지만 NOT EXIST는 서브쿼리 내에 값이 존재하지 않아야(false) 메인쿼리의 결과를 출력합니다.

'데이타베이스 > MySQL' 카테고리의 다른 글

MySQL DB 공부  (0) 2024.01.22
트랜잭션(Transaction)의 개념과 사용법  (0) 2024.01.09
서브쿼리(Subquery)  (0) 2023.12.26
조인(JOIN)  (0) 2023.12.26
특정 문자가 포함된 인스턴스 찾기  (0) 2023.06.14