您好,欢迎访问一九零五行业门户网

Oracle执行计划 讲解(一)

看懂oracle执行计划是优化的第一步,让我们从下面的例子开始吧。 下面为补充内容 1、创建测试表 sqlgt; create ta
看懂oracle执行计划是优化的第一步,让我们从下面的例子开始吧。
        下面为补充内容
1、创建测试表
oracle优化器:rbo和cbo两种, 从oracle10g开始优化器已经抛弃了rbo,下面的列子说明cbo大概是怎样的
现象t表还没有被分析,提示/*+dynamic_sampling(t 0) */*的目的是让cbo无法通过动态采样获取表中的实际数据情况,此时cbo只能根据t表中非常有限的信息(比如表中的extents数量,数据块的数量)来猜测表中的数据。从结果中可以看到cbo猜出表中id=1的有195条,这个数值对于表的总数来说,是一个非常小的值,所以cbo选择了索引而不是全表扫描。
      而实际情况如下所示:       通过动态取样,cbo估算出行数为49454,非常接近于真实50820数目。选择了全表扫描。
       我们来收集一下统计信息
现在扫描过的行数为50815。
如果我们更新了所有的id为99看看。
因为没有对表进行分析,所以表中的分析数据还是之前的信息,cbo并不知道。我们可以看出rows值为1,也就是说cbo人为表t中的id=99的值只有1条,,所有选择仍然是索引。
我们收集一把统计信息。
上面为补充内容,下面正式开始
其它类似信息

推荐信息