> 데이터 베이스 > MySQL 튜토리얼 > Oracle执行计划 讲解(一)

Oracle执行计划 讲解(一)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-07 17:08:10
원래의
1107명이 탐색했습니다.

看懂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条,,所有选择仍然是索引。
 
       我们收集一把统计信息。

 

      上面为补充内容,下面正式开始

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿