filter造成的性能问题

      filter这个词总让人很费解,它下一级可以挂 一个子节点,二个节点,三个子节点...。

     挂一个子节点意思过滤,如对全表进行扫描后,按照条件过滤,丢弃不满足条件的数据。

     挂二个子节点类似是nest loop。

     挂三个子节点类似1和2做nest loop,结果集再与3做nest loop(这个是我推测的)。

SQL> set linesize 300
SQL> set timing on
SQL> set autotrace traceonly
SQL> SELECT count(DISTINCT BI.RISK_BASE_ID) count
  2    FROM GG_RISK_BASE_INFO           BI,
  3         GG_TASK_FORM_CLASSTEMPLATE   FC,
  4         GG_TASK_FORM_TEMPLATEVERSION FT,
  5         GG_TASK_FORM_RELATIONTEMPLAT FR,
  6         GG_TASK_WORK_SHEET           WS,
  7         GG_TASK_FORM_EXETASKRECORD   FE
  8   WHERE FC.RISK_BASE_ID = BI.RISK_BASE_ID
  9     and FT.TEMPLATE_FID = FC.TEMPLATE_ID
 10     and FR.TEMPLATE_VERSION_ID = FT.TEMPLATE_VERSION_ID
 11     and FR.OBJECT_ID = WS.WORK_SHEET_ID
 12     and FE.REL_TEMP_ID = FR.REL_TEMP_ID
 13     and FR.REL_OBJECT_TYPE = '1'
 14     AND FE.TASK_START_TIME > BI.RISK_ASSESS_TIME
 15     and (exists
 16          (SELECT 1
 17             FROM GG_TASK_FORM_RISK_CTL_LOG CL
 18            where CL.TEMPLATE_VERSION_ID = FT.TEMPLATE_VERSION_ID) or exists
 19          (SELECT 1
 20             FROM GG_TASK_FORM_NEW_RISK_INFO RI
 21            where RI.REL_TEMP_ID = FR.REL_TEMP_ID));


已用时间:  00: 04: 10.36
执行计划


数据规模:
select count(1) from GG_RISK_BASE_INFO; --2828 
select count(1) from GG_TASK_FORM_CLASSTEMPLATE;  --5600 
select count(1) from GG_TASK_FORM_TEMPLATEVERSION;  --7646 
select count(1) from GG_TASK_FORM_EXETASKRECORD;  --33064 
select count(1) from GG_TASK_FORM_RELATIONTEMPLAT;  --67319  
select count(1) from GG_TASK_FORM_RISK_CTL_LOG;--5210
select count(1) from GG_TASK_FORM_NEW_RISK_INFO;--27831


CREATE INDEX IDX_PTNRI_REL_TEMP_ID ON GG_TASK_FORM_NEW_RISK_INFO(REL_TEMP_ID);
CREATE INDEX IDX_PTFRCL_REL_T_V_ID ON GG_TASK_FORM_RISK_CTL_LOG(TEMPLATE_VERSION_ID);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值