oracle10gdblink优化,dblink如果很慢可以用这种方式优化_第1页
oracle10gdblink优化,dblink如果很慢可以用这种方式优化_第2页
oracle10gdblink优化,dblink如果很慢可以用这种方式优化_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、oraclelOgdblink优化,dblink如果很慢可以用这种方式优化发现dblink如果很慢可以用这种方式加个/*+driving_site(xxx)*/,查询很快使用DBLINK远程访问数据库的优化策略和思路:策略:远程访问,网络传输占很大部分,优化原则,减少网络传输,将小的结果集拉到本地处理;思路1:在远端建立视图;思路2:使用DRIVING_SITE将数据拉到本地处理;出现这种执行计划,主要原因是使用了dblink,要想看到执行计划,可以加hint,如:/*+remote_mapping(dbink)*/或/*+driving_site(table_name)*/用法:/*+dri

2、ving_site(table_name)*/:table_name般是大表!在近期的一个数据库查询统计中,需要通过db_link跨库进行表的关联,其中A库中的某张拥有百万以上数据的表与B库中的拥有千条记录以上的表进行关联。两张表进行关联的字段都建有索引。但在实际查询中如果从B库进行两表的关联却会导致A库中大表的全表扫描,查询速度慢是次要的,关键是全表扫描会影响到A库的正常运行。通过对SQL语句的不断调整、优化发现当两表进行简单的关联查询时,如果在select后面采用"*"获取所有数据时,查询不会导致全表扫描,但在select后面取具体字段时将会导致大表的全表扫描。在简单查

3、询的基础上进行group分组将直接导致大表的全表扫描,在此种情况下,所有的语句优化技巧都将失效,因为索引无效,此时必须采取特殊的方法建立起关联查询的索引,强制指定在关联过程中那张表作为主要驱动表,那张作为从表。在跨库关联查询的过程中,因为表不在同个数据库中(同时在不同操作系统的服务器上)将导致关联过程中将张表的数据提取到另个数据库中进行关联。此时问题出现,如果在关联过程中将大表数据提取到小表所在库进行运算将导致大表的全表扫描,整个运算过程将非常慢且影响A库的正常运行。最终解决全表扫描的办法是,如果在B库对不同数据库的两张大小表进行关联时,通过driving_site强制指定主驱动表,即以所指定

4、的表为主要表,将其它表作为从表提取到驱动表所在的库进行关联运算。具体语句如下:select/*+driving_site(main)*/a.*,b.*fromA.aemailprotected,B.bminorwheremain.id=minor.idand这样一来就可以避免大表所在库的全表扫描,查询速度将成级数级提高。解释:当指定/*+driving_site(main)*/时,oracle将会从minor表获取全部数据到main表所在的数据库来进行关联运算.(索引起作用,速度快)若指定/*+driving_site(minor)*/时,oracle将会从main表获取全部数据到minor表

5、所在的数据库来进行关联运算.(索引失败,全表扫描)当然Oracle中有很多的关键字用于指定关联查询时的运算方法,等后面碰到具体应用实例实再作一一介绍。引用:DRIVING_SITE作用和ORDERED类似。DRIVING_SITE通常在分布式查询中使用。如果没有这个提示,Oracle会先从远程点检索,并将它们连接到本地站点中。通过使用DRIVING_SITE,我们可以先在本地进行检索,将检索后的数据发送到远程节点进行连接优化案例:-createorreplaceviewv_fasp_bjjzzfyszxqkfld2asselecta.bdgmanagedivision,a.gnkm,acctd

6、ate,sum(a.yszb)yszb,sum(a.zjzfjh)zjzfjh,sum(a.sqzfjh)sqzfjh,sum(a.zjzfzc)zjzfzc,sum(a.sqzfzc)sqzfzc,sum(a.zjzfjhjy)zjzfjhjy,sum(a.sqzfjhjy)sqzfjhjyfrom(select/*+driving_site(t)*/t.mb_codeasbdgmanagedivision,substr(t.bs_code,1,3)gnkm,substr(t.create_date,1,4)|substr(t.create_date,6,2)|substr(t.create

7、_date,9,2)asacctdate,sum(t.budget_money)yszb,0asjhje,0aszjzfjh,0assqzfjh,0aszcje,0aszjzfzc,0assqzfzc,-0aszcjezt,0aszjzfzczt,0assqzfzczt,0asjhjy,0aszjzfjhjy,0assqzfjhjy-0asjhkyje,0aszjzfjhkyje,0assqzfjhkyjefromemailprotected_linktwheret.en_codenotlike910%-andt.pk_codelike1%andt.bo_code=001001andt.is_

8、end=1andt.is_valid=1andt.bl_codelike001001%andt.budget_vou_idisnotnullgroupbyt.mb_code,substr(t.bs_code,1,3),substr(t.create_date,1,4)|substr(t.create_date,6,2)|substr(t.create_date,9,2)-支付系统录入指标unionallselectc.mb_codebdgmanagedivision,substr(c.bs_code,1,3)gnkm,plan_pay.acctdate,0asyszb,nvl(plan_pay

9、.zj_plan_money+plan_pay.sq_plan_money,0)jhje,nvl(plan_pay.zj_plan_money,0)zjzfjh,nvl(plan_pay.sq_plan_money,0)sqzfjh,nvl(plan_pay.zj_pay_money+plan_pay.sq_pay_Money,0)zcje,nvl(plan_pay.zj_pay_money,0)zjzfzc,nvl(plan_pay.sq_pay_Money,0)sqzfzc,nvl(plan_pay.zj_plan_money+plan_pay.sq_plan_money)-(plan_p

10、ay.zj_pay_money+plan_pay.sq_pay_Money),0)jhjy,nvl(plan_pay.zj_plan_money,0)-nvl(plan_pay.zj_pay_money,0)zjzfjhjy,nvl(plan_pay.sq_plan_money,0)-nvl(plan_pay.sq_pay_Money,0)sqzfjhjy-20130507将gl_balanee修改为(selectsum_id,ccidfromgl_balance_month_detailwhereset_month>0groupbysum_id,ccid)g-解决计划额度ID号9531

11、19,6月份计划,新的额度,在GL_BALANCE表中还没有对应的记录。from(select/*+driving_site(c)*/sum_id,ccid,rcidfromemailprotected_linkwhereset_month>0groupbysum_id,ccid,rcid)g,emailprotected_linkc,(selectplan.toctrlid,plan.acctdateacctdate,sum(zj_plan_money)zj_plan_money,sum(sq_plan_money)sq_plan_money,sum(zj_pay_money)zj_p

12、ay_money,sum(sq_pay_Money)sq_pay_Moneyfrom-查询计划数据(select/*+driving_site(p)*/p.toctrlid,substr(p.create_date,1,4)|substr(p.create_date,6,2)|substr(p.create_date,9,2)asacctdate,sum(casewhenp.PK_CODElike11%thenp.plan_moneyelse0end)zj_plan_money,sum(casewhenp.PK_CODElike12%thenp.plan_moneyelse0end)sq_pl

13、an_moneyfromemailprotected_linkp,emailprotected_linkgwherep.ID=g.vou_idandp.is_valid=1andg.is_end=1andg.set_month>0andg.billtype_codenotlike1%andp.budget_vou_idisnotnullgroupbyp.toctrlid,substr(p.create_date,1,4)|substr(p.create_date,6,2)|substr(p.create_date,9,2)plan,-查询支出数据(select/*+driving_sit

14、e(p)*/p.fromctrlid,substr(p.create_date,1,4)|substr(p.create_date,6,2)|substr(p.create_date,9,2)asacctdate,sum(casewhen(p.PK_CODElike11%andp.clear_dateisnotnullandg.is_end=1)thenp.pay_moneyelse0end)zj_pay_money,sum(casewhen(p.PK_CODElike12%andp.clear_dateisnotnullandg.is_end=1)thenp.pay_moneyelse0en

15、d)sq_pay_moneyfromemailprotected_linkp,emailprotected_linkgwherep.ID=g.vou_id(+)andp.is_valid=1andg.set_month>0andg.billtype_codelike3%andp.budget_vou_idisnotnullgroupbyp.fromctrlid,substr(p.create_date,1,4)|substr(p.create_date,6,2)|substr(p.create_date,9,2)paywhereplan.toctrlid=pay.fromctrlid(+)groupbyplan.toctrlid,plan.acctdate)plan_paywhereg.sum_id=plan_pay.toctrlidandg.sum_id=c.toctrlidandg.rcid=c.rcid-andg.ccid=c.CCIDandg.set_month>0and(plan_pay.zj_pay_money<>0orplan_pay.sq_pay_Money<>0orplan_pay.zj_plan_money<>0orplan_pay.sq_plan_money<>0)andc.en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论