# 估计查询大小
按照概率来看。
1.and连接的条件,要求概率相乘,or连接的条件,要求概率相加
2.V(a,r)可以算概率,就是记录r满足属性a相等条件的概率为1/V(a,r)
3.n用来和概率相乘得到最后的大小
4.查询的表记录有多少,就是多少,不要自己改写查询语句
5.映射全部是线性的。
连接次数
加入r和s进行连接,br是r表所占块数,bs是s表所占块数, ns是s记录数,nr是r记录数,r是外层, s是内层, 可用内存块为M,输入缓存区和每个输出缓存区为bb个块。
连接方式 | block seek | block transfor |
---|---|---|
nested loop join 最好情况 | 2 2 2 | b r + b s b_r+b_s br+bs |
nested loop join 最坏情况 | n r + b r n_r+b_r nr+br | n r ⋅ b s + b r n_r\cdot b_s+b_r nr⋅bs+br |
block nested loop join | 2 ⋅ [ b r M − 2 ] 2\cdot[\frac{b_r}{M-2}] 2⋅[M−2br]上取整 | [ b r M − 2 ⋅ b s + b r ] \frac{b_r}{M-2}\cdot b_s+b_r] M−2br⋅bs+br]上取整 |
hash join不递归 | 2 [ b r b s ] + [ b s b b ] + 2 n h 2[\frac{b_r}{b_s}]+[\frac{b_s}{b_b}]+2n_h 2[bsbr]+[bbbs]+2nh | 3 ( b r + b s ) + 4 n h 3(b_r+b_s)+4n_h 3(br+bs)+4nh |
hash join递归 | … | … |