Как сделать выбор SQL на нескольких разделах? - PullRequest
13 голосов
/ 24 ноября 2010

Есть ли более эффективный способ, чем:

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

Ответы [ 2 ]

15 голосов
/ 24 ноября 2010

В редких случаях следует использовать синтаксис PARTITION (partitionN) в запросе.

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

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

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

0 голосов
/ 24 ноября 2010

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

...