13

Is there a more efficient way than:

select * from transactions partition( partition1 ) 
union all 
select * from transactions partition( partition2 ) 
union all 
select * from transactions partition( partition3 ); 
casperOne
  • 73,706
  • 19
  • 184
  • 253
Yusufk
  • 1,055
  • 2
  • 10
  • 15

2 Answers2

16

It should be exceptionally rare that you use the PARTITION( partitionN ) syntax in a query.

You would normally just want to specify values for the partition key and allow Oracle to perform partition elimination. If your table is partitioned daily based on TRANSACTION_DATE, for example

SELECT *
  FROM transactions
 WHERE transaction_date IN (date '2010-11-22', 
                            date '2010-11-23', 
                            date '2010-11-24')

would select all the data from today's partition, yesterday's partition, and the day before's partition.

Justin Cave
  • 227,342
  • 24
  • 367
  • 384
  • Ok, I wasn't sure that Oracle would limit it's search to the relevant partition, makes sense that it does. I have a HUGE table, partitioned hourly that I need to query for data that spans days. Thanks – Yusufk Nov 26 '10 at 06:34
-2

Can you provide additional context? What are your predicates? What makes you think that you need to explicitly tell the optimizer to go against multiple partitions. You may have the wrong partition key in use, for example.

erbsock
  • 1,207
  • 8
  • 10