Oracle 基于可更改分区表创建动态视图

Oracle 基于可更改分区表创建动态视图,oracle,query-performance,sql-view,Oracle,Query Performance,Sql View,我有一个应用程序,它从oracle中的视图中读取数据,该视图从一个大表中读取数据,该视图包含函数并与其他表连接 视图需要一段时间才能运行,因为表每个月都会变大 我尝试按年份划分表,并比以前更快 我的问题是如何基于可变分区(按年份)创建视图。假设分区是一个日期列,它是分区键,您可以执行以下操作: create or replace view THIS_CURRENT_YEAR as select * from MY_PARTITIONED_TABLE where PARTITION_COL &g

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

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

我尝试按年份划分表,并比以前更快


我的问题是如何基于可变分区(按年份)创建视图。

假设分区是一个日期列,它是分区键,您可以执行以下操作:

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)
创建或替换
将此\u当前\u年度视为
挑选*
从我的分区表
其中PARTITION\u COL>=trunc(sysdate,'YYYY')
和分区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)
创建或替换
将此\u当前\u年度视为
挑选*
从我的分区表
其中PARTITION\u COL>=trunc(sysdate,'YYYY')
和分区COL

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

您可以像
create view。。。作为选择。。。从…起分区(…)
但我认为这对您没有帮助。不幸的是,这一解决方案对我没有帮助,因为我的分区是可变的。您可以简单地将分区列包含在视图中,然后使用按日期筛选的条件从视图中读取吗?分区修剪应该被下推到视图中,并且只选择相关的分区。。。作为选择。。。从…起分区(…)
但我认为这对您没有帮助。不幸的是,这一解决方案对我没有帮助,因为我的分区是可变的。您可以简单地将分区列包含在视图中,然后使用按日期筛选的条件从视图中读取吗?分区修剪应该向下推到视图中,只选择相关的分区。谢谢你,康纳,我会尝试它,我认为它对我有帮助康纳,我会尝试它,我认为它对我有帮助