加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 动态选择分区

发布时间:2021-05-19 13:50:13 所属栏目:站长百科 来源:网络整理
导读:我有一个有几百个分区的表,我一般对最新的35个感兴趣. 因此,我试图创建可以动态访问这些视图的视图.即始终使用最新的情况. 查询: select PARTITION_NAME,PARTITION_POSITION,NUM_ROWS,AVG_ROW_LEN from all_tab_partitions where table_name = 'MY_TABLE' A

我有一个有几百个分区的表,我一般对最新的35个感兴趣.

因此,我试图创建可以动态访问这些视图的视图.即始终使用最新的情况.

查询:

select PARTITION_NAME,PARTITION_POSITION,NUM_ROWS,AVG_ROW_LEN
  from all_tab_partitions
    where
    table_name = 'MY_TABLE'
    AND PARTITION_NAME <> 'P_LAST'
    AND PARTITION_POSITION < (SELECT MAX(PARTITION_POSITION) 
    FROM all_tab_partitions) - 35
    order by 2 DESC
    ;

似乎返回我感兴趣的分区名称,但是,我没有设法使用它的结果来选择分区.例如.:

CREATE OR REPLACE VIEW MY_VIIEW AS
WITH t AS ( [Above query] )
SELECT * FROM 
MY_TABLE PARTITION (SELECT /*+ FIRST_ROWS(1) */ PARTITION_NAME 
                    from t);

(不是实际视图,只是一个例子)

那我该怎么做?如何创建一个始终是最新分区(execpt为“MAX”)的视图?

我正在使用Oracle 10g

谢谢

也许你可以在每个语句中使用具有分区名称的union所有语句来构造视图的查询,例如
create view p as
select * from my_table partition (part1)
union all
select * from my_table partition (part1)
...
union all
select * from my_table partition (part35)

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读