嵌套循环成本消耗

这里只考虑io消耗:

全表扫描:一次多块读时间和多块读次数;多块读次数由总块数与一次多块读的块数决定
单表全表扫描成本:多块读次数*一次多块读时间/单块读时间=(总块数/一次多块读块数) * 一次多块读时间/单块读时间
嵌套循环都是全表扫描的话:第一个表全表扫描成本+第一个表返回行数*第二个表执行一次的成本

索引扫描:索引高度,表选择性,索引选择性,聚簇因子,叶子块数决定
单表访问索引扫描成本=blevel+(叶子块数*表选择性)+ceil(聚簇因子*索引选择性)

那么嵌套循环时:
访问索引的成本 —— blevel + avg_leaf_blocks_per_key - 1
访问表的成本 ——  表所在行的增量成本是 avg_data_block_per_key

在新机制中,首先在外部表中找到第一行,然后遍历索引,但停止在叶子块上,只为内部表选取相关的rowid;接下来处理外部表的第二、第三行等等重复
上述过程。当找到全部的rowid之后,对其进行排序,然后只对内部表按顺序访问一遍,按其rowid的顺序取出相应的行。

所以,对于这种嵌套循环,每次访问内部表只是对索引块的访问,最后对表按rowid去扫描一次外部表。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24496749/viewspace-732419/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24496749/viewspace-732419/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值