Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Why is using Select in IN() clause much slower than using values?

Re: Why is using Select in IN() clause much slower than using values?

From: <cliffliang_at_gmail.com>
Date: 9 Aug 2006 10:27:39 -0700
Message-ID: <1155144459.506128.313710@b28g2000cwb.googlegroups.com>


The version is 9.2.0.4.0.

The "distinct" in the IN() select clause was a part of my testing and I have run it with and without. Whoever put together SF_QUAL_PAYCODES had put in duplicate values.

I know that stats are run nightly. The DBA would know more about the details.

I've never used hints before but after a bit of Googling I tried the following hints which gave better results: /*+ HASH_SJ */
00:06:02.02

/*+ MERGE_SJ */
00:06:16.05

/*+ NL_SJ */
00:06:33.05

Anything else I should try? I don't have experience with manipulating the CBO and analyzing plans. Any Oracle Education classes or online resources you recommend?

Thanks to all for responding!
-=Cliff

Here's the plan:
Plan Table



| Operation | Name | Rows | Bytes| Cost |
Pstart| Pstop |

| SELECT STATEMENT | | 19K| 1M| 205 |
| |
| SORT GROUP BY | | 19K| 1M| 205 |
| |
| NESTED LOOPS | | 19K| 1M| 69 |
| |
| SORT UNIQUE | | | | |
| |
| TABLE ACCESS FULL |SF_QUAL_P | 59 | 826 | 2 |
| |
| VIEW |VP_ALLTOT | 329 | 20K| 1 |
| |
| UNION-ALL PARTITION | | | | |
| |
| HASH JOIN | | 112 | 17K| 11546 |
| |
| HASH JOIN | | 391 | 56K| 11418 |
| |
| TABLE ACCESS FULL |PAYPERIOD | 10K| 274K| 16 |
| |
| HASH JOIN | | 288K| 33M| 11345 |
| |
| TABLE ACCESS FULL |PAYPERIOD | 2K| 56K| 16 |
| |
| NESTED LOOPS | | 19K| 1M| 11327 |
| |
| HASH JOIN | | 19K| 1M| 11327 |
| |
| TABLE ACCESS BY |PAYCODE | 1 | 19 | 1 |
| |
| INDEX UNIQUE SC|XU1_PAYCO | 82 | | |
| |
| HASH JOIN | | 1M| 137M| 11321 |
| |
| TABLE ACCESS FU|PERSON | 15K| 201K| 45 |
| |
| HASH JOIN | | 1M| 114M| 11078 |
| |
| TABLE ACCESS F|PAYCODE1M | 315 | 7K| 2 |
| |
| HASH JOIN | | 4M| 185M| 11061 |
| |
| TABLE ACCESS |WTKEMPLOY | 15K| 217K| 25 |
| |
| TABLE ACCESS |WFCTOTAL | 4M| 120M| 10769 |
| |
| INDEX UNIQUE SCAN|PK_LABORA | 1 | 5 | |
| |
| INDEX FULL SCAN |XU2_PAYPE | 3K| 44K| 127 |
| |
| NESTED LOOPS | | 1 | 183 | 37 |
| |
| NESTED LOOPS | | 1 | 171 | 36 |
| |
| NESTED LOOPS | | 1 | 143 | 35 |
| |
| NESTED LOOPS | | 1 | 123 | 34 |
| |
| NESTED LOOPS | | 1 | 118 | 34 |
| |
| NESTED LOOPS | | 1 | 99 | 33 |
| |
| NESTED LOOPS | | 1 | 86 | 32 |
| |
| HASH JOIN | | 1 | 62 | 31 |
| |
| TABLE ACCESS |WTKEMPLOY | 15K| 217K| 25 |
| |
| TABLE ACCESS |SCHEDULED | 1 | 48 | 2 |
| |
| TABLE ACCESS B|PAYCODE1M | 1 | 24 | 1 |
| |
| INDEX RANGE S|PK_PAYCOD | 1 | | 1 |
| |
| TABLE ACCESS BY|PERSON | 1 | 13 | 1 |
| |
| INDEX UNIQUE S|PK_PERSON | 1 | | |
| |
| TABLE ACCESS BY |PAYCODE | 1 | 19 | 1 |
| |
| INDEX UNIQUE SC|PK_PAYCOD | 82 | | |
| |
| INDEX UNIQUE SCAN|PK_LABORA | 1 | 5 | |
| |
| INDEX RANGE SCAN |XU2_PAYPE | 15 | 300 | 1 |
| |
| INDEX RANGE SCAN |XU2_PAYPE | 1 | 28 | 1 |
| |
| INDEX RANGE SCAN |XU2_PAYPE | 1 | 12 | 1 |
| |
| NESTED LOOPS | | 1 | 183 | 37 |
| |
| NESTED LOOPS | | 1 | 171 | 36 |
| |
| NESTED LOOPS | | 1 | 143 | 35 |
| |
| NESTED LOOPS | | 1 | 123 | 34 |
| |
| NESTED LOOPS | | 1 | 118 | 34 |
| |
| NESTED LOOPS | | 1 | 99 | 33 |
| |
| NESTED LOOPS | | 1 | 86 | 32 |
| |
| HASH JOIN | | 1 | 62 | 31 |
| |
| TABLE ACCESS |WTKEMPLOY | 15K| 217K| 25 |
| |
| TABLE ACCESS |PROJECTED | 1 | 48 | 2 |
| |
| TABLE ACCESS B|PAYCODE1M | 1 | 24 | 1 |
| |
| INDEX RANGE S|PK_PAYCOD | 1 | | 1 |
| |
| TABLE ACCESS BY|PERSON | 1 | 13 | 1 |
| |
| INDEX UNIQUE S|PK_PERSON | 1 | | |
| |
| TABLE ACCESS BY |PAYCODE | 1 | 19 | 1 |
| |
| INDEX UNIQUE SC|PK_PAYCOD | 82 | | |
| |
| INDEX UNIQUE SCAN|PK_LABORA | 1 | 5 | |
| |
| INDEX RANGE SCAN |XU2_PAYPE | 15 | 300 | 1 |
| |
| INDEX RANGE SCAN |XU2_PAYPE | 1 | 28 | 1 |
| |
| INDEX RANGE SCAN |XU2_PAYPE | 1 | 12 | 1 |
| |

Received on Wed Aug 09 2006 - 12:27:39 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US