[Oracle] 서브쿼리 실행순서

당당·2023년 12월 30일
0

Oracle

목록 보기
42/51
post-thumbnail

📔설명

순수하게 서브쿼리문으로 수행되는 방법과, 서브쿼리문부터 실행되게 하는 방법, 서브쿼리문에서 메인쿼리문부터 실행되게 하는 방법을 알아보자.


🍔서브쿼리 실행순서

select ename, sal
from emp --14
where deptno in (select deptno
				from dept --4
                where deptno=10);

아무 힌트를 주지 않고, 위의 쿼리문을 실행하면 오라클은 해시 세미 조인을 실행한다.


위의 sql에서 서브쿼리부터 실행되게 하고 싶다.
그럴 땐 no_unnest push_subq 힌트를 사용하면 된다.

semi join : 서브쿼리가 아니라 조인 형태로 실행

no_unnest : semi join을 하지 않고, 순수하게 서브쿼리로 작동

push_subq : 서브쿼리부터 수행

no_push_subq : 메인쿼리부터 수행

select ename, sal
from emp --14
where deptno in (select /*+ no_unnest push_subq */ deptno
				from dept --4
                where deptno=10);

dept부터 먼저 읽은 것을 확인할 수 있다.

메인쿼리부터 실행되게 하려면

select ename, sal
from emp --14
where deptno in (select /*+ no_unnest no_push_subq */ deptno
				from dept --4
                where deptno=10);

no_push_subq 힌트를 주면 된다.

profile
MySQL DBA 신입

0개의 댓글