首页 > Oracle > Oracle 简单的嵌套循环cost计算方法!
2014
02-20

Oracle 简单的嵌套循环cost计算方法!

虽然一直在强调在平时的优化过程当中,不要单方面的看cost来优化,但为了更深入了解嵌套循环,我们可以简单看下嵌套循环的cost计算方法。

1. 首先建立t1和t2测试表

2. 给2个表收集统计信息

3. 查看嵌套循环的执行计划

所以 IO COST = CEIL(outer table blocks*mreadtim/db_file_multiblock_read_count/sreadtim)+ CEIL((outer table cardinality)*inner table 
然后我们看一下上面查询出来的信息,由于MBRC=0,所以这里采用的是非工作量统计方式:mreadtim=ioseektim+db_file_multiblock_count*db_block_size/iotftspeed:

CPU COST = ceil(PLAN_TABLE.cpu_cost/cpuspeed/1000/sreadtim):

这里算出来的cost为5976353,和我们前面sql执行的时候,统计出来的cost 5976K很相近,嵌套循环的cost算法就是这么算出来的。

最后编辑:
作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL