다음 중 아래 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