[SQLD 퀴즈] 실행계획 해석

다음 중 아래 SQL문과 실행계획을 보고, 두 테이블의 조인 순서와 inner 테이블에 대한 조인 회수로 가장 적절한 것은?

------------------------------------ 아       래 --------------------------------------

 

select  *
from    t_small a, t_big b
where   a.id = b.id
and     a.colid = b.colid
and     a.number = b.number
and     b.name = 'password'
and     a.length <= 10
order by
        a.length desc
go
 
 
Rows   Executes   StmtText
----- ----------- ---------------------------------------------------------------
     0              1      select  *
     0              1        |--Sort(ORDER BY:([a].[length] DESC))
     0              1             |--Filter(WHERE:([t_small].[length] as [a].[length]<=(10
    30              1                 |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1
    30              1                  |--Nested Loops(Inner Join, OUTER REFERENCES:(
    30              1                    |   |--Table Scan(OBJECT:([t_big] AS [b]),
    30             30                    |   |--Index Seek(OBJECT:([t_small].[t_small_
    30             30                    |--RID Lookup(OBJECT:([t_small] AS [a]), SEEK:
 
(8개 행 적용됨)

-----------------------------------------------------------------------------------

① 조인 순서 : t_small → t_big, inner 테이블 조인 횟수 : 30
② 조인 순서 : t_big → t_small, inner 테이블 조인 횟수 : 60
③ 조인 순서 : t_small → t_big, inner 테이블 조인 횟수 : 1
④ 조인 순서 : t_big → t_small, inner 테이블 조인 횟수 : 30

 

 

 

[출처] http://www.dbguide.net/da.db?cmd=snb9_4_view&boardUid=165071&boardConfigUid=81

 

 

 

 

 

* 정답 및 해설 *

 

정답 :  ④

실행계획 상 위 쪽에서 아래 쪽으로 조인이 진행된다.
NL 조인의 경우 위쪽에 있는 Outer 집합에서 출력된 결과 건수(Rows)만큼 Inner 집합으로 조인 시도가 일어난다.

 

[출처] http://www.dbguide.net/da.db?cmd=snb9_4_view&boardUid=165183&boardConfigUid=81