根据嵌套连接,给定关系R和S
对于R中的每个元组r
对于S中的每个元组s
如果r和s满足连接条件
然后输出元组
上述循环的费用估算:
– R和S中的b(R)和b(S)个块数
–每个外部关系块均读取一次
–对于每个外部关系块,一次读取内部关系
总结:IO = b(R)+ n(R)* b(S)总共IO操作
假设| R |> | S |即b(R)= 10,n(R)= 100,n(S)= 30,b(s)= 3
现在,如果R是外部关系,那么IO = 10 + 100 * 3 = 340
如果S是外部关系,则IO = 3 + 30 * 10 = 303
可以看出,如果外部变量的值较小,总IO较小,并且已经给出| R | <| S |。因此,关系r(R)应该在外部循环中以具有较小的关系磁盘块访问数。
参考:
- https://www.informatik.huberlin.de/de/forschung/gebiete/wbi/teaching/archive/sose05/dbs2/slides/09_joins.pdf
- https://en.wikipedia.org/wiki/Nested_loop_join
这个问题的测验