Jessica, It looks like your query has to deal with all 14 partitions, because the column 'poid_id0', which your table partitioned on, is not in 'where' clause. That's why Oracle can not eliminate other (not populated) 13 partitions.
Igor Neyman, OCP DBA [EMAIL PROTECTED] ----- Original Message ----- To: "Multiple recipients of list ORACLE-L" <[EMAIL PROTECTED]> Sent: Wednesday, January 23, 2002 6:15 PM > Oracle 8.1.7.0.0 > > table event_t range partitioned by column poid_id0. only 1 partition called p_1 out of the 14 contains data. A query on event_t became significantly slow after rows increase: > > select poid_DB, poid_ID0, poid_TYPE, poid_REV, start_t, end_t, sys_descr > from event_t > where event_t.end_t >= :1 and event_t.end_t < :2 and > event_t.poid_TYPE like :3 and (event_t.account_obj_ID0 = :4 and > event_t.account_obj_DB = 1 ) order by event_t.end_t desc > > Rows Execution Plan > ------- --------------------------------------------------- > 0 SELECT STATEMENT GOAL: CHOOSE > 0 SORT (ORDER BY) > 0 PARTITION RANGE (ALL) PARTITION: START=1 STOP=14 > 0 TABLE ACCESS GOAL: ANALYZED (BY LOCAL INDEX ROWID) OF > 'EVENT_T' PARTITION: START=1 STOP=14 > 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF > 'I_EVENT__ACCTOBJ_END_T' (NON-UNIQUE) PARTITION: START=1 > STOP=14 > > Index I_EVENT__ACCTOBJ_END_T was created on event_t ( account_obj_id0, end_t ) using LOCAL. > Other 2 columns involved in the where clause have either only one distinct value or a few. So are not indexed. > column account_obj_id0 has 1 million unique values in event_t and remain unchanged during the tests. when rows insert, average rows per account_obj_id0 value increase as well. > > Trace shows always the same execution plan but elapsed time increased enormously! > I did 2 rounds of tests, every round I dropped and recreated event_t empty: > > In test round 1: > 1.) inserted 1 million rows into event_t with same end_t value. Query returned: > call count cpu elapsed disk query current rows > ------- ------ -------- ---------- ---------- ---------- ---------- ---- ------ > Parse 23 0.02 0.09 0 0 0 0 > Execute 156 0.02 0.29 0 0 0 0 > Fetch 156 0.14 1.09 8 2698 0 195 > ------- ------ -------- ---------- ---------- ---------- ---------- ---- ------ > total 335 0.18 1.47 8 2698 0 195 > > 2.) inserted ANOTHER 1.5 million rows into event_t with 10,000+ different end_t values. Query returned: > Parse 36 0.00 0.04 0 0 0 0 > Execute 118 0.01 0.01 0 0 0 0 > Fetch 118 0.61 86.71 1385 5045 0 587 > ------- ------ -------- ---------- ---------- ---------- ---------- ---- ------ > total 272 0.62 86.76 1385 5045 0 587 > > In test round 2: > 1.) inserted 1 million rows into event_t with same end_t value. Query returned as round1 step 1.) > > 2.) inserted ANOTHER 5 million rows into event_t with ANOTHER end_t value. Query returned: > Parse 40 0.00 0.11 0 0 0 0 > Execute 139 0.02 0.12 0 0 0 0 > Fetch 139 0.25 4.66 303 2868 0 761 > ------- ------ -------- ---------- ---------- ---------- ---------- ---- ------ > total 318 0.27 4.89 303 2868 0 761 > > 3.) inserted ANOTHER 2 million rows into event_t with 12,000+ different end_t values. Query returned: > Parse 34 0.01 0.01 0 0 0 0 > Execute 97 0.00 0.06 0 0 0 0 > Fetch 97 0.58 89.93 1257 4260 0 614 > ------- ------ -------- ---------- ---------- ---------- ---------- ---- ------ > total 228 0.59 90.00 1257 4260 0 614 > > > In test round 1 elapsed time increased 60 times from 1 million to 2.5 million rows. In round 2 it increased 3 times from 1 to 6 million rows, and 18 times from 6 to 8 million rows. So #-of-rows in event_t is not the #1 convict for large physical reads. It's more likely the #-of-different-end_t-values. Before I always thought that to an indexed column the more different values the better. But what's going on in this case? Am I missing anything? > > Top wait event in statspack report is 'db file sequential read'. oradebug event 10046 shows 'db file sequential read' is waiting on object event_t. > > Thank you! > > Jessica Mao > Portal Software, Inc. > -- > Please see the official ORACLE-L FAQ: http://www.orafaq.com > -- > Author: Jessica Mao > INET: [EMAIL PROTECTED] > > Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 > San Diego, California -- Public Internet access / Mailing Lists > -------------------------------------------------------------------- > To REMOVE yourself from this mailing list, send an E-Mail message > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in > the message BODY, include a line containing: UNSUB ORACLE-L > (or the name of mailing list you want to be removed from). You may > also send the HELP command for other information (like subscribing). -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Igor Neyman INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).