楼主: woyigerenktv

一个执行47小时、耗尽CPU的SQL优化

[复制链接]
求职 : 数据库管理员
招聘 : 系统架构师
论坛徽章:
4
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22ITPUB社区千里马徽章
日期:2013-08-22 09:58:032014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
31#
发表于 2014-3-7 13:16 | 只看该作者
我转换了一下SQL,和上面的逻辑是一样的。楼主可以把SQL的执行计划贴出来:
select
m.mkt_terminal_sale_interface_id,
iv.billtypename,
c.customer_name,
mt.terminal_id terminal_id,
(select dm.dictname
    from cpcdict dm
   where lower(dm.dictcode) like 'terminal_level%'
     and dm.dictvalue = mt.terminal_level
     and dm.entid = 2750) Terminal_Level,
(select ds.dictname
    from cpcdict ds
   where lower(ds.dictcode) like 'terminal_property%'
     and ds.dictvalue = mt.terminal_property
     and ds.entid = 2750) Terminal_Property,
eh.employee_code employee_code,
d.dept_code dept_code,
dd.attribute1 Big_District,
io.specs item_spec,
i.item_id,
(select icd.item_class_name
    from item_class icd
   where io.item_class2 = icd.item_class_id
     and icd.organization_id = 2750) Item_Class2_Name,
(select icx.item_class_name
    from item_class icx
   where io.item_class1 = icx.item_class_id
     and icx.organization_id = 2750) Item_Class1_Name,
(select dt.dictname
    from cpcdict dt
   where lower(dt.dictcode) like 'capacity%'
     and dt.dictvalue = io.capacity
     and dt.entid = 2750) Capacity,
ib1.brand_username brand_sub,
ib2.brand_username brand_series
  from
  (select * from mkt_terminal_sale_interface m
   where m.report_time >=o_date('2013-12-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
   and m.report_time <= to_date('2013-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
   and m.billtypecode in ('1001', '1002', '1009')
   and nvl(m.is_gift, 0) <> 2
   And exists (Select 1
          From Sa_Deptaccessctrl Sd
         Where Sd.Orgid = mt.org_id
           and Sd.Userid = 'kfo_???'
           and Sd.Organization_Id = 2750)
           and 2750 = m.organization_id) m,
       item_org                    io,
       item                        i,
       employee_header             eh,
       customer                    c,
       inv_billtype                iv,
       mkt_terminal                mt,
       dept                        d,
       mkt_ccs_ims_centre          dd,
       item_brand_attribute        ib1,
       item_brand_attribute        ib2
where m.item_id = i.item_id
   and m.employee_id = eh.employee_id
   and m.billtypecode = iv.billtypecode(+)
   and m.customer_id = c.customer_id(+)
   and io.item_id = m.item_id
   and 2 = nvl(eh.is_guider, 2)  
   and 2750 = io.organization_id   
   and io.item_id = i.item_id
   and io.brand_sub = ib1.brand_id(+)
   and io.brand_series = ib2.brand_id(+)
   and io.organization_id = m.organization_id
   and (2 > nvl(eh.Engage_Type, 0) or 2 < nvl(eh.Engage_Type, 0))
   and eh.crm_entid = io.crm_entid
   and m.terminal_id = mt.terminal_id(+)
   and mt.organization_id = 2750
   and mt.org_id = d.dept_id(+)
   and d.entid = 2750
   and mt.org_id = dd.dept_id(+)
   and mt.crm_entid = io.crm_entid
   and nvl(mt.applies_terminal, 0) = 2
   and eh.organization_id = 2750

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-02-18 11:42:47奥迪
日期:2014-02-19 23:01:52马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02夏利
日期:2014-01-05 23:30:122013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2013-01-06 18:38:44复活蛋
日期:2012-12-27 22:39:382012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
32#
发表于 2014-3-15 22:57 | 只看该作者
anlinew分析的很透彻,这种分析型的SQL还是要从业务角度去优化,帮助oracle构建执行计划,  很多时候oracle的执行计划也不准,特别是非索引字段倾斜度很大的时候,  等结果啊

使用道具 举报

回复
论坛徽章:
46
托尼托尼·乔巴
日期:2017-01-03 11:47:42喜羊羊
日期:2015-03-10 14:01:432015年新春福章
日期:2015-03-06 11:57:31沸羊羊
日期:2015-03-04 14:43:43马上有房
日期:2014-12-29 13:45:35马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11夏利
日期:2014-01-28 09:42:56雪铁龙
日期:2013-10-09 13:33:15秀才
日期:2016-01-21 13:37:04
33#
发表于 2014-3-21 11:20 | 只看该作者
执行计划呢?

使用道具 举报

回复
论坛徽章:
7
优秀写手
日期:2014-03-04 06:00:132014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:08
34#
 楼主| 发表于 2014-3-24 10:41 | 只看该作者
FYI 请看

QQ图片20140324104035.jpg (106.49 KB, 下载次数: 12)

QQ图片20140324104035.jpg

使用道具 举报

回复
论坛徽章:
7
优秀写手
日期:2014-03-04 06:00:132014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:08
35#
 楼主| 发表于 2014-3-24 10:55 | 只看该作者
附件为AWR报告

awrrpt_1_72147_72148.zip

100.94 KB, 下载次数: 4

使用道具 举报

回复
论坛徽章:
7
优秀写手
日期:2014-03-04 06:00:132014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:082014年新春福章
日期:2014-04-14 09:54:08
36#
 楼主| 发表于 2014-3-24 10:58 | 只看该作者
CPU使用情况

QQ图片20140324105731.jpg (15.94 KB, 下载次数: 13)

QQ图片20140324105731.jpg

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
37#
发表于 2014-5-3 17:20 | 只看该作者

使用道具 举报

回复
论坛徽章:
15
马上加薪
日期:2014-12-03 12:48:23双子座
日期:2016-01-15 10:47:09秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10双子座
日期:2015-12-15 09:58:52巨蟹座
日期:2015-11-17 17:17:02白羊座
日期:2015-11-09 13:49:13双子座
日期:2015-11-02 10:25:11秀才
日期:2015-09-21 09:46:16水瓶座
日期:2015-08-25 15:30:04
38#
发表于 2014-6-16 16:47 | 只看该作者
使用oracle提供的oracle sql tuning advisor吧,这种复杂的sql只能使用它了

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
39#
发表于 2014-6-22 09:11 来自手机 | 只看该作者
尝试用化整为零的方式把sql简化吧。每个查询效率先调整好。然后考虑驱动连接顺序。要么干脆拆掉成多个sql,要么用hint尝试固化,或者考虑用with+Materialize

使用道具 举报

回复

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

本版积分规则 发表回复

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