프로그래밍 언어/Oracle

Oracle_IN, EXIST, JOIN 개념 및 차이점

OHSAYU 2023. 11. 25. 13:28

IN : 몇백 ~ 몇천건 조회, 쉽고 직관적, 모든 컬럼 값을 직접 비교, NULL인식 불가해서 NVL 사용

EXISTS : 몇만 이상, TRUE / FALSE만을 비교, IN 보다 성능 우위

INNER JOIN : IN, EXISTS보다 더 빠르다. 다양한 용도로 사용하기 때문에 직관성과 가독성이 떨어짐. JOIN 조건을 동일한 값이 존재하는 테이블로 설정했을 경우 나오면 안될 여러 행들이 출력

-- IN(값 직접 비교, 직관적, 테이블에 ROW가 늘어날수록 느림, 1만건 이하 ROW에 유리)
SELECT *
FROM PLAYER
WHERE TEAM_ID IN(SELECT TEAM_ID FROM PLAYER);

-- EXISTS(TRUE / FALSE로 값 비교, 직관적, IN보다 빠름)
SELECT *
FROM PLAYER
WHERE EXISTS(SELECT TEAM_ID FROM PLAYER);

-- INNER JOIN(가장 빠름, 비직관적, JOIN 테이블에 동일한 값이 있을 경우 여러행 반환
SELECT A.*
FROM PLAYER A
INNER JOIN (SELECT TEAM_ID FROM PLAYER) B
ON A.TEAM_ID = B.TEAM_ID;

 

 

출처 : https://wakestand.tistory.com/511

 

SQL IN EXISTS JOIN 성능 비교 및 용도 정리글

각종 SQL에서 데이터 조회 시 IN EXIST INNER JOIN을 사용해 조회를 하게 되는데 여기서 IN, EXIST, INNER JOIN 중 뭘 써야 성능이 가장 좋은가 싶을거다 일단 정답은 몇백~몇천건을 조회하는 정도라면 의미

wakestand.tistory.com