Oracle 开发人员分析SQL 执行计划的关注点

繁琐复杂的执行计划、可能迷了开发人员的眼、导致一条性感又傻X的SQL 在服务器上跑得特欢乐
有介于此、重点抓住几个部分、至于其他的嘛、当然是、非礼勿视咯、、


㈠ 返回行的数量

Oracle优化器是基于成本的、评估成本的一个主要指标便是查询多少行

一般的、返回值在100W或者大表返回值超过总记录50%、可优化的空间就非常小

标记图为:



㈡ 返回行与逻辑读的比率

经验值是:每行5个以下逻辑读开销是可接受的

标记图为:
每行需要花费7 个逻辑读



㈢ 聚合查询



这类查询有 2 点需要注意:
① 返回行应是扫描表的行数而不是1
② 一般的优化技巧:把索引当成瘦表而无需再回表(回表标识为 Table Access By index rowid)

标记图为:



㈣ 预测行的准确度



执行计划里有个列叫:Rows、这是Oracle 预测返回的行、有些时候或许不是特马准备
记得拿该值和真正返回的行比较、如果确实不准确、应该去找原因、比如统计信息、直方图、高水位...等

标记图为:




㈤ 谓词信息


Predicate Information 有2 个取值:filter 和 access、其中、access 一般为索引读或hash join

关注此鸟、最重要的在于、查看是否有发生数据类型转换、这抑制了索引、也增大了开销

标记图为:



㈥ 动态采样



表统计信息过期变质了、或者压根就没分析过表

标记图为:



好了、先写这么多、后续再补上




By David Lin
2013-06-21
Always be a first-rate version of yourself,instead of a second-rate version of someone else

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值