如何在多个分区上进行SQL选择?

时间:2010-11-24 14:57:26

标签: sql oracle database-partitioning

是否有比以下更有效的方式:

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

2 个答案:

答案 0 :(得分:15)

在查询中使用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 :(得分:-1)

你能提供额外的背景吗?你的谓词是什么?是什么让你认为你需要明确告诉优化器反对多个分区。例如,您可能使用了错误的分区键。