12
返回列表 发新帖
楼主: wwjfeng

请教如何根据set autotrace traceonly得到的sql信息,来优化sql

[复制链接]
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:06:282010年世界杯参赛球队:德国
日期:2010-03-02 13:45:37ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51Jeep
日期:2013-10-09 13:54:002014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
 楼主| 发表于 2009-9-7 14:16 | 显示全部楼层

回复 #7 bell6248 的帖子

我只是想举个例子,就是比方有两个很复杂的sql实现一样的功能  看执行计划哪项数据来选择哪个更好呢?

thanks!

使用道具 举报

回复
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:06:282010年世界杯参赛球队:德国
日期:2010-03-02 13:45:37ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51Jeep
日期:2013-10-09 13:54:002014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
 楼主| 发表于 2009-9-7 14:19 | 显示全部楼层

回复 #10 zergduan 的帖子

hehe  
要是在cbo下我只根据执行计划中的cost列来选择会出错么?
| Id  | Operation                   | Name       | Rows  | Bytes | Cost (%CPU)|
Time     |

--------------------------------------------------------------------------------

----------

|   0 | SELECT STATEMENT            |            |     1 |   168 |     4   (0)|
00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| INDEX_TEST |     1 |   168 |     4   (0)|
00:00:01 |

|*  2 |   INDEX RANGE SCAN          | AAA        |     1 |       |     3   (0)|
00:00:01 |

使用道具 举报

回复
论坛徽章:
122
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2009-9-7 14:19 | 显示全部楼层
假单说吧 看逻辑读  db block gets+consistent gets 越少越好,全面的说你开始看书吧

使用道具 举报

回复
论坛徽章:
122
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2009-9-7 14:21 | 显示全部楼层
cost没有任何意义,他只是告诉你为什么cbo会选择这个执行计划,如果cbo计算正确的话,cost越低效率越高
,但是cbo并不会总正确

使用道具 举报

回复
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2009-9-7 14:21 | 显示全部楼层
原帖由 wwjfeng 于 2009-9-7 14:16 发表
我只是想举个例子,就是比方有两个很复杂的sql实现一样的功能  看执行计划哪项数据来选择哪个更好呢?

thanks!

主要关注下面红色部分
统计信息
----------------------------------------------------------
          1  recursive calls
            0  db block gets
        5  consistent gets

          0  physical reads
          0  redo size
       3408  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)

          1  rows processed

[ 本帖最后由 anlinew 于 2009-9-7 14:22 编辑 ]

使用道具 举报

回复
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:06:282010年世界杯参赛球队:德国
日期:2010-03-02 13:45:37ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51Jeep
日期:2013-10-09 13:54:002014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
 楼主| 发表于 2009-9-7 14:24 | 显示全部楼层
呵呵 谢谢各位了 知道一点了
我再去看看书

使用道具 举报

回复
论坛徽章:
3
九尾狐狸
日期:2006-04-12 17:47:49ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
发表于 2009-9-7 14:39 | 显示全部楼层
原帖由 bell6248 于 2009-9-7 13:58 发表
第一次语句运行后的recursive calls和consistent gets数目比较大,比较大是因为这个语句使用了hard parse。
在此运行相同的语句时该语句使用了soft parse, 因此数目大大的下降了! 有关详细的内容看有关书吧!
还有你的这个语句没什么可优化的了, execution plan完全正确, 使用了index range scan!



正解!另外,既然set autotrace 里面打开了statistics, 不如把时间也打开,set timing on, 顺便比较返回时间。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时9.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表