ITPub博客

首页 > 数据库 > Oracle > Oracle分布式查询语句的性能优化

Oracle分布式查询语句的性能优化

Oracle 作者:ftc007 时间:2019-11-25 14:33:08 0 删除 编辑

分析:

由于优化器无法判断或获得远端表的统计信息,故原执行计划默认会采取把远程表(无论大小)拉到本地再连接的方式执行,

这样如果远程表较大的情况将会比较缓慢,像上述查询耗时在1分钟以上。

undefined

原SQL语句:

Select
 Wb.*,
 (Select Wi.Nextarrivedate
    From Mbs7_Oms.Xs_Warearriveinfo@Dc.Moonbasadb.Com Wi
   Where Wi.Warecode = Wb.Warecode) As Nextarrivedate
  From Mbs7_Crm.Wi_Warebase@Dc.Moonbasadb.Com Wb                 ---这里远端表较大
 Inner Join (Select Wa.Stylecode, Max(Wa.Warecode) As Warecode
               From Mbs7_Crm.Wi_Warebase@Dc.Moonbasadb.Com Wa
              Inner Join (Select Stylecode
                           From Dc_Support.Kh_Visitpage Vis
                          Where Vis.Cuscode = :B1
                            And Vis.Addtime >= Trunc(Sysdate - 31)
                            And Vis.Addtime < Trunc(Sysdate - 30)
                            And Rownum <= 5
                          Order By Addtime Desc) Vis
                 On Wa.Stylecode = Vis.Stylecode
              Group By Wa.Stylecode) Wc
    On Wb.Warecode = Wc.Warecode

解决方案:

用以下HINTS方式加上去后,优化器会调整执行计划,把运算端控制在WB,并且远端表MBS7_CRM.WI_WAREBASE表字段的索引(STYLECODE)缺少连接索引,于是在目标端创建以下索引进行优化,优化后COST从7百多下降到20,运行2秒内可返回结果,性能增加不少。


远端表创建索引:

create index mbs7_crm.ix_WI_WAREBASE_STYLECODE on mbs7_crm.WI_WAREBASE(STYLECODE)

调优后的SQL:

Select /*+DRIVING_SITE(WB)*/
 Wb.*,
 (Select Wi.Nextarrivedate
    From Mbs7_Oms.Xs_Warearriveinfo@Dc.Moonbasadb.Com Wi
   Where Wi.Warecode = Wb.Warecode) As Nextarrivedate
  From Mbs7_Crm.Wi_Warebase@Dc.Moonbasadb.Com Wb                 ---远端表较大
 Inner Join (Select Wa.Stylecode, Max(Wa.Warecode) As Warecode
               From Mbs7_Crm.Wi_Warebase@Dc.Moonbasadb.Com Wa
              Inner Join (Select Stylecode
                           From Dc_Support.Kh_Visitpage Vis
                          Where Vis.Cuscode = :B1
                            And Vis.Addtime >= Trunc(Sysdate - 31)
                            And Vis.Addtime < Trunc(Sysdate - 30)
                            And Rownum <= 5
                          Order By Addtime Desc) Vis
                 On Wa.Stylecode = Vis.Stylecode
              Group By Wa.Stylecode) Wc
              
    On Wb.Warecode = Wc.Warecode


©版权声明:本文为   天凯DBS   的原创文章,转载请附上原文出处链接及本声明,否则将追究法律责任。

原文链接: https://dbs-service.cn/a/173.html


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25401903/viewspace-2665559/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
十年DBA实战经验,专注数据库运维与优化,长期服务金融,税务,电商等关键行业,深受客户一致好评! 更多DBA服务与实战资源,请点击文章末尾出处 “天凯DBS”!

注册时间:2014-03-11

  • 博文量
    7
  • 访问量
    13620