.5NestedLoop
.5MergeJoin
.5RicCC
.5通往性能优化的天堂-地狱 JOIN方法说明.5):
==================================
NestedLoop:
foreach rowA in tableA where tableA.col2=?
{
search rowsB from tableB where tableB.col1=rowA.col1 and tableB.col2=? ;
if(rowsB.Count<=0)
discard rowA ;
else
output rowA and rowsB ;
}
MergeJoin:
.5merge join
.5==================================
.5NestedLoop
.5MergeJoin
.5.5A
.5B
.5m
.5n
.5m < n
.5a
.5b
.5A
.5B
.5A.col1
.5B.col1
.5select A.col1, B.col2 from A inner join B where A.col1 = B.col1
.5 .5NestedLoop.5.5A
.5outer input
.5B
.5inner input
.5A
.5IO
.5a
.5clustered index seek
.53(
.5IO
.5a + 3*m
.5B
.5inner input
.5A
.5outer input
.5.5MergeJoin:
MergeJoin
.5A
.5B
.5Scan
.5Merge
.5A
.5B
.5IO
.5a + b
.5IO
.5 .5a + 3*m << a + b
.53*m << b
.5NestedLoop
.5A
.5B
.5NestedLoop
.5MergeJoin
.5cpu
.5 OK
.5.5charge
.5charge_no
.5int identity(1,1)
.510
.5582
.52
.5A
.5col1
.5999
.52
.5min(A.col1) = min(charge.charge_no)
.5Max(A.col1) < max(charge.charge_no)
.5我们在set statistics io on
和set statistics time on
之后,执行语句:[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
.5999
.5