2010-11-24 4 views
11

Есть более эффективный способ, чем:Как сделать выбор SQL по нескольким разделам?

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

Что в этом случае означает эффективное? Меньше печатать? быстрее результаты? – EvilTeach 2010-11-24 15:02:25

+0

Более быстрые результаты. – Yusufk 2010-11-26 06:34:43

ответ

14

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

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

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

бы выбрать все данные из сегодняшнего раздела, вчерашний раздел, и за день до этого-х разделов.

-1

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