楼主: SunnyXu

[精华] 通过分析SQL语句的执行计划优化SQL(总结)

[复制链接]
论坛徽章:
62
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24版主2段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41现任管理团队成员
日期:2011-05-07 01:45:08
41#
发表于 2006-1-13 23:24 | 只看该作者

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
42#
发表于 2006-1-14 00:04 | 只看该作者

顶,支持!

大家说好就是真的好!!!哈。。。。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
43#
发表于 2006-1-14 05:49 | 只看该作者
Excellent!

Thanks,

使用道具 举报

回复
论坛徽章:
0
44#
发表于 2006-1-14 08:44 | 只看该作者
顶一下,不错!分析的比较透彻。

使用道具 举报

回复
论坛徽章:
15
授权会员
日期:2006-03-21 15:51:46会员2007贡献徽章
日期:2007-09-26 18:42:10数据库板块每日发贴之星
日期:2007-06-16 01:03:50数据库板块每日发贴之星
日期:2007-06-01 01:02:53ERP板块每日发贴之星
日期:2007-05-29 01:02:28数据库板块每日发贴之星
日期:2007-05-28 01:01:49行业板块每日发贴之星
日期:2007-05-23 01:04:05设计板块每日发贴之星
日期:2007-05-20 01:04:04数据库板块每日发贴之星
日期:2007-05-16 01:02:34ERP板块每日发贴之星
日期:2007-05-14 01:02:30
45#
发表于 2006-1-14 10:51 | 只看该作者
很久没有见到这样好的文章了,为你鼓掌!
非常感谢你的奉献。

使用道具 举报

回复
论坛徽章:
0
46#
 楼主| 发表于 2006-1-17 12:30 | 只看该作者
[\CODE]
这样的SQL G该如何优化:
update table1 a set col1='aaa'
where exists (select 1 from tab2 b where a.col2=b.col3 and b.col4 in ('a','b','c','d','e');
table1 记录为1800万,table2为3万多。col2列无索引,单独用col4选取b表5000条记录,加上a表200多万,cbo选择为hash,觉得有点慢啊
[/CODE]

对于update语句的优化,可以分为2步:
1.优化select col1 where exists (select 1 from tab2 b where a.col2=b.col3 and b.col4 in ('a','b','c','d','e');
如果该语句运行的很快,则可以转为第二步
2. 对update部分的优化
可以看:
http://blog.csdn.net/lunar2000/archive/2005/06/27/404090.aspx

使用道具 举报

回复
论坛徽章:
92
2011新春纪念徽章
日期:2011-01-25 15:42:33咸鸭蛋
日期:2012-03-19 10:46:00版主1段
日期:2012-05-15 15:24:11奥运会纪念徽章:排球
日期:2012-08-29 07:02:50奥运会纪念徽章:跳水
日期:2012-09-26 06:44:27ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32奥运会纪念徽章:击剑
日期:2012-10-12 07:20:332013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-02-13 15:13:20
47#
发表于 2006-1-17 13:23 | 只看该作者
最初由 SunnyXu 发布
[B][B]具体案例分析:[/B]

[B]环境:oracle 817 + linux + 阵列柜[/B]
          0  recursive calls
       8823  db block gets
   56650250  consistent gets
    1413250  physical reads
          0  redo size
        316  bytes sent via SQL*Net to client
        421  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          1  rows processed
注意上面2个执行计划对应的statistics部分好像有问题,我正在重测,但因系统出现问题,需要过些日子才能测试完。
。 [/B]


可以尝试full table scan+ parallel+ hash join 可能更快。小表应该完全可以放到hash_join_area_size中

使用道具 举报

回复
论坛徽章:
0
48#
 楼主| 发表于 2006-1-17 13:56 | 只看该作者
这个我可以也测一下。

使用道具 举报

回复
论坛徽章:
5
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33奥运会纪念徽章:蹦床
日期:2012-09-03 12:52:06奥运会纪念徽章:跆拳道
日期:2012-10-24 13:52:34秀才
日期:2015-11-30 09:59:23
49#
发表于 2006-1-17 14:05 | 只看该作者
好文,
3Q

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
50#
发表于 2006-1-17 15:11 | 只看该作者
真是难得的好文,佩服楼主!!!!!!!!!

使用道具 举报

回复

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

本版积分规则 发表回复

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