Как сделать выбор SQL по нескольким разделам?

Существует ли более эффективный способ:

select * from transactions partition( partition1 ) 
union all 
select * from transactions partition( partition2 ) 
union all 
select * from transactions partition( partition3 ); 

Ответ 1

Не исключено, что вы используете синтаксис PARTITION (partitionN) в запросе.

Обычно вы просто хотите указать значения для ключа раздела и позволить Oracle выполнять устранение разделов. Если ваша таблица разделяется ежедневно на основе TRANSACTION_DATE, например

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

выберет все данные из сегодняшнего раздела, вчерашнего раздела и день перед разделом.

Ответ 2

Можете ли вы предоставить дополнительный контекст? Каковы ваши предикаты? Что заставляет вас думать, что вам нужно явно указывать оптимизатору на использование нескольких разделов. Например, у вас может быть неправильный ключ раздела.