Kirti - Thanks so much for your reply and taking the time to work out an example. I learned a couple of new techniques from your example. That one is going in my files. Dennis Williams DBA Lifetouch, Inc. [EMAIL PROTECTED]
-----Original Message----- Sent: Friday, March 15, 2002 6:53 PM To: Multiple recipients of list ORACLE-L Hi Dennis, Yes, your are right. Thanks for catching it. I messed up. However, the order is still left to right... While deciding on the partition when composite partition key is involved, the partition is selected as follows (for 2 column composite key): 1. Value < column1 then select that partition. 2. If Value = column1 then if value < column2 then select that partition. Here is what I did: SQL> create table t1 (c varchar2(1), n number(4)) 2 partition by range (c, n) 3 ( partition p1 values less than ('X', 400), 4 partition p2 values less than ('Y', 800), 5 partition p3 values less than (maxvalue, maxvalue) 6 ); Table created. SQL> insert into t1 values ('A', 900); 1 row created. SQL> insert into t1 values ('X', 900); 1 row created. SQL> insert into t1 values ('X', 100); 1 row created. SQL> insert into t1 values ('Y', 900); 1 row created. SQL> insert into t1 values ('Y', 500); 1 row created. SQL> insert into t1 values ('Z', 1000); 1 row created. SQL> commit; Commit complete. SQL> select * from t1 partition (p1); C N - ---------- A 900 X 100 SQL> select * from t1 partition (p2); C N - ---------- X 900 Y 500 SQL> select * from t1 partition (p3); C N - ---------- Y 900 Z 1000 Unless I am still confused :( Thanks. - Kirti -----Original Message----- Sent: Friday, March 15, 2002 2:48 PM To: Multiple recipients of list ORACLE-L Kirti - If I can humbly beg to differ. I assumed that it would work the way you described. However, I conducted some tests and found to my surprise that it seems to base decisions on the right-most column (although I only tested two columns). Therefore, to use your examples, P1 -- values less than ('X', 999999) will contain values where column1 = 'X' and column2 less than 999999 P2 -- values less than ('Y', 999999) will contain values where column1 = 'Y' and column2 less than 999999. Since my column1 only has two values, I didn't test what it does with "unlimited" in the first column. I'm not saying that didn't miss something. My ulterior motive for responding on the list is that I frequently get some fuzzy ideas clarified by others on the list. Dennis Williams DBA Lifetouch, Inc. [EMAIL PROTECTED] -----Original Message----- Sent: Friday, March 15, 2002 1:33 PM To: Multiple recipients of list ORACLE-L If I understood the original question correctly, with the given conditions there will be three partitions. Oracle evaluates concatenated key from left to right order, so if the type and seq number are the partitioning columns here then the partitions would be: P1 -- values less than ('X', 999999) This will contain everything where type < X P2 -- values less then ('Y', 999999) This will contain everything where type = X P3 -- values less then (MAXVALUE, MAXVALUE) This will contain everything else. I am using 999999 to denote the highest value for the seq number. Any other ideas? - Kirti -----Original Message----- Sent: Friday, March 15, 2002 11:28 AM To: Multiple recipients of list ORACLE-L John - At last a question I can answer! Anyway I think so. You can partition on a concatenated key. I just did this on our data warehouse and brought query times from over 2 minutes to under 10 seconds. Here is what my partition looks like. create table sumacctfact2 nologging pctfree 5 partition by range ( periodgrain, periodenddate ) ( partition sum_fy_01 values less than ('FY', to_date('01011999','mmddyyyy')) tablespace data_fy_01 storage ( maxextents unlimited ), partition sum_fy_02 values less than ('FY', to_date('01012000','mmddyyyy')) tablespace data_fy_02 storage ( maxextents unlimited ), partition sum_fy_03 values less than ('FY', to_date('01012001','mmddyyyy')) tablespace data_fy_03 storage ( maxextents unlimited ), partition sum_fy_04 values less than ('FY', to_date('02012001','mmddyyyy')) tablespace data_fy_04 storage ( maxextents unlimited ), Dennis Williams DBA Lifetouch, Inc. [EMAIL PROTECTED] -----Original Message----- Sent: Friday, March 15, 2002 10:38 AM To: Multiple recipients of list ORACLE-L I think what my boss is asking me to do is not possible, but since I don't have much experience with partitioning I thought I'd ask here (I did read some of manuals but didn't find an answer that suited my conditions). My boss wants a table partitioned by 2 columns - seq_no and type. If the type = 'X' then it's just a range partition, but then he wants another partition that contains all data that type!='X' but is inclusive of the entire range. Is this possible? Something like (I know this syntax isn't correct ) create table test_part( id number(11) unique, owner_id number(11) not null, type varchar2(30) not null, name varchar2(40)) partition by range(owner_id,type) (partition p1 values less than (20000000) and type ='X' tablespace test, partition p2 values less than (50000000) and owner_table ='X' tablespace test, partition p3 values less than (100000000) and owner_table ='X' tablespace test, partition p4 values less than (500000000) and owner_table ='X' tablespace test, partition p5 values less than (1000000000) and owner_table ='X' tablespace test) partition p6 values less that (1000000000) and owner_table !='X' tablespace test; -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Shaw John-P55297 INET: [EMAIL PROTECTED] -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Deshpande, Kirti 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: DENNIS WILLIAMS 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).