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; --76
select count(1) from GG_TASK_FORM_EXETASKRECORD; --330
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);
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com