오경석의 개발노트

Oracle_IN, EXIST, JOIN 개념 및 차이점 본문

프로그래밍 언어/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

'프로그래밍 언어 > Oracle' 카테고리의 다른 글

Oracle_서브 쿼리(Subquery)  (0) 2023.11.24
Oracle_조인  (1) 2023.11.15
Oracle_SELECT 문장 실행 순서  (1) 2023.11.12
Oracle_ORDER BY 절  (0) 2023.11.11
Oracle_GROUP BY, HAVING 절  (0) 2023.11.10
Comments