我有一个从 Oracle 中的视图读取的应用程序,该视图从一个大表中读取,并且该视图包含函数并与其他表连接。

该视图需要一段时间才能运行,因为表每个月都会变得更大。

我尝试按年份对表进行分区,并且变得比以前更快。

我的问题是如何根据可更改的分区(按年份)创建视图。


假设 PARTITION_COL 是作为分区键的日期列,您可以执行以下操作:

create or replace
view THIS_CURRENT_YEAR as
select *
from  MY_PARTITIONED_TABLE
where PARTITION_COL >= trunc(sysdate,'YYYY')
and PARTITION_COL <  add_months(trunc(sysdate,'YYYY'),12)

通过这种方式,您将在可能的情况下进行分区修剪。


您可以创建类似的视图CREATE VIEW ... AS SELECT ... FROM ... PARTITON (...),但我认为这对您没有帮助。

不幸的是,这个解决方案对我没有帮助,因为我的分区是可变的。

您是否可以简单地将分区列包含在视图中,然后使用按日期过滤的条件从视图中读取数据?分区修剪应下推到视图中并仅选择相关分区。

谢谢康纳,我会尝试一下,我认为这对我有帮助