13

有没有比以下更有效的方法:

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

2 回答 2

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')

将从今天的分区、昨天的分区和前一天的分区中选择所有数据。

于 2010-11-24T15:04:49.620 回答
-1

你能提供额外的上下文吗?你的谓词是什么?是什么让您认为您需要明确告诉优化器针对多个分区进行处理。例如,您可能使用了错误的分区键。

于 2010-11-24T15:17:00.097 回答