天天看點

where多個條件oracle,Oracle在where子句中添加一個條件會減慢查詢速度

在根據少數表格(其中一些非常龐大(超過10億條記錄)和一些相當小(100條記錄))生成報告時,需要17分鐘。但是我在where子句中添加了一個條件,它開始運作1個小時以上。

table1有10億條記錄,添加的條件是“and line_ind in('Y','*')”。

問題是,為什麼CBO會從聯結的結果集中進行全表掃描?有序的提示似乎沒有幫助,是以想知道如何使這個選擇運作更快。

這裡是表格的記錄數

table1(a) 1,234,432,435

table2(b) 1,234,432,435

table3(c) 900

table4(d) 602,364,856

table5(e) 80

table6(f) 50

table7(g) 264,938,373

table8(h) 14,827

SELECT DISTINCT c_cd,

ci_nbr,

c.s_id1,

d.d_cd,

SUM (CASE WHEN (D_CD = 'MAILED') THEN 1 ELSE 0 END) AS MAILED

FROM table1 a

LEFT OUTER JOIN table2 b ON (a.o_id = b.o_id AND a.co_sid = b.co_sid)

INNER JOIN table3 c

ON c.c_sid = a.c_sid AND c.c_cd IN ('CC364', 'CC552')

INNER JOIN table4 c ON a.sc_sid = c.sc_sid

INNER JOIN table5 d ON d.d_SID = b.d_SID

INNER JOIN table6 e ON e.cc_sid = b.cc_sid

INNER JOIN table7 f ON f.ci_sid = b.ci_sid

INNER JOIN table8 g ON g.dt_sid = a.dt_sid

GROUP BY dt_cd,

c_nbr,

c.s_id1,

d.d_cd

where dt_cd in ('c6543-010114','c5653-010514') and line_ind in ('Y', '*') and c_nbr='728246'解釋計劃

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

| Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 811 | 296K| 304K (3)| 01:11:02 | | | | | |

| 1 | PX COORDINATOR | | | | | | | | | | |

| 2 | PX SEND QC (RANDOM) | :TQ10009 | 811 | 296K| 304K (3)| 01:11:02 | | | Q1,09 | P->S | QC (RAND) |

| 3 | HASH GROUP BY | | 811 | 296K| 304K (3)| 01:11:02 | | | Q1,09 | PCWP | |

| 4 | PX RECEIVE | | 811 | 296K| 304K (3)| 01:11:02 | | | Q1,09 | PCWP | |

| 5 | PX SEND HASH | :TQ10008 | 811 | 296K| 304K (3)| 01:11:02 | | | Q1,08 | P->P | HASH |

| 6 | HASH GROUP BY | | 811 | 296K| 304K (3)| 01:11:02 | | | Q1,08 | PCWP | |

|* 7 | HASH JOIN | | 811 | 296K| 304K (3)| 01:11:02 | | | Q1,08 | PCWP | |

| 8 | PX RECEIVE | | 802 | 278K| 277K (4)| 01:04:39 | | | Q1,08 | PCWP | |

| 9 | PX SEND BROADCAST | :TQ10007 | 802 | 278K| 277K (4)| 01:04:39 | | | Q1,07 | P->P | BROADCAST |

|* 10 | HASH JOIN | | 802 | 278K| 277K (4)| 01:04:39 | | | Q1,07 | PCWP | |

| 11 | PX RECEIVE | | 802 | 177K| 225K (4)| 00:52:44 | | | Q1,07 | PCWP | |

| 12 | PX SEND BROADCAST | :TQ10006 | 802 | 177K| 225K (4)| 00:52:44 | | | Q1,06 | P->P | BROADCAST |

|* 13 | HASH JOIN BUFFERED | | 802 | 177K| 225K (4)| 00:52:44 | | | Q1,06 | PCWP | |

| 14 | PX RECEIVE | | 96 | 4800 | 2 (0)| 00:00:01 | | | Q1,06 | PCWP | |

| 15 | PX SEND BROADCAST | :TQ10004 | 96 | 4800 | 2 (0)| 00:00:01 | | | Q1,04 | P->P | BROADCAST |

| 16 | PX BLOCK ITERATOR | | 96 | 4800 | 2 (0)| 00:00:01 | | | Q1,04 | PCWC | |

| 17 | TABLE ACCESS STORAGE FULL | TABLE5 | 96 | 4800 | 2 (0)| 00:00:01 | | | Q1,04 | PCWP | |

|* 18 | HASH JOIN | | 802 | 138K| 225K (4)| 00:52:44 | | | Q1,06 | PCWP | |

| 19 | BUFFER SORT | | | | | | | | Q1,06 | PCWC | |

| 20 | PX RECEIVE | | 51 | 561 | 5 (0)| 00:00:01 | | | Q1,06 | PCWP | |

| 21 | PX SEND HASH | :TQ10000 | 51 | 561 | 5 (0)| 00:00:01 | | | | S->P | HASH |

| 22 | TABLE ACCESS STORAGE FULL | TABLE6 | 51 | 561 | 5 (0)| 00:00:01 | | | | | |

| 23 | PX RECEIVE | | 802 | 130K| 225K (4)| 00:52:44 | | | Q1,06 | PCWP | |

| 24 | PX SEND HASH | :TQ10005 | 802 | 130K| 225K (4)| 00:52:44 | | | Q1,05 | P->P | HASH |

|* 25 | HASH JOIN | | 802 | 130K| 225K (4)| 00:52:44 | | | Q1,05 | PCWP | |

| 26 | PX RECEIVE | | 802 | 101K| 104K (5)| 00:24:25 | | | Q1,05 | PCWP | |

| 27 | PX SEND BROADCAST | :TQ10003 | 802 | 101K| 104K (5)| 00:24:25 | | | Q1,03 | P->P | BROADCAST |

|* 28 | HASH JOIN | | 802 | 101K| 104K (5)| 00:24:25 | | | Q1,03 | PCWP | |

| 29 | PX RECEIVE | | 2 | 24 | 17 (0)| 00:00:01 | | | Q1,03 | PCWP | |

| 30 | PX SEND BROADCAST | :TQ10001 | 2 | 24 | 17 (0)| 00:00:01 | | | Q1,01 | P->P | BROADCAST |

| 31 | PX BLOCK ITERATOR | | 2 | 24 | 17 (0)| 00:00:01 | | | Q1,01 | PCWC | |

|* 32 | TABLE ACCESS STORAGE FULL | TABLE3 | 2 | 24 | 17 (0)| 00:00:01 | | | Q1,01 | PCWP | |

|* 33 | HASH JOIN | | 68190 | 7857K| 104K (5)| 00:24:25 | | | Q1,03 | PCWP | |

| 34 | PX RECEIVE | | 2 | 34 | 276 (0)| 00:00:04 | | | Q1,03 | PCWP | |

| 35 | PX SEND BROADCAST | :TQ10002 | 2 | 34 | 276 (0)| 00:00:04 | | | Q1,02 | P->P | BROADCAST |

| 36 | PX BLOCK ITERATOR | | 2 | 34 | 276 (0)| 00:00:04 | | | Q1,02 | PCWC | |

|* 37 | TABLE ACCESS STORAGE FULL| TABLE8 | 2 | 34 | 276 (0)| 00:00:04 | | | Q1,02 | PCWP | |

| 38 | PX BLOCK ITERATOR | | 22M| 2177M| 104K (5)| 00:24:21 | 1 |1048575| Q1,03 | PCWC | |

|* 39 | TABLE ACCESS STORAGE FULL | TABLE1 | 22M| 2177M| 104K (5)| 00:24:21 | 1 |1048575| Q1,03 | PCWP | |

| 40 | PX BLOCK ITERATOR | | 969M| 32G| 121K (3)| 00:28:15 | 1 |1048575| Q1,05 | PCWC | |

|* 41 | TABLE ACCESS STORAGE FULL | TABLE2 | 969M| 32G| 121K (3)| 00:28:15 | 1 |1048575| Q1,05 | PCWP | |

| 42 | PX BLOCK ITERATOR | | 398M| 47G| 50955 (1)| 00:11:54 | | | Q1,07 | PCWC | |

| 43 | TABLE ACCESS STORAGE FULL | TABLE7 | 398M| 47G| 50955 (1)| 00:11:54 | | | Q1,07 | PCWP | |

| 44 | PX BLOCK ITERATOR | | 589M| 10G| 27170 (2)| 00:06:21 | 1 | 13 | Q1,08 | PCWC | |

| 45 | TABLE ACCESS STORAGE FULL | TABLE4 | 589M| 10G| 27170 (2)| 00:06:21 | 1 | 13 | Q1,08 | PCWP | |