仅从联合查询所需的mview

时间:2012-02-07 08:53:16

标签: sql oracle materialized-views

我有按月手动分区的物化视图

create materialized view MV_MVNAME_201001 as
select MONTH_ID, AMOUNT, NAME
from TABLE_NAME_201001

201002,201003,...,201112,2012,2009

现在我需要从这些视图中查询,只获取所需的视图。

是否有可能,不涉及客户端?

示例查询

select AMOUNT, NAME
from ( 
    --union all mview
)
where month_id >= 201003
  and month_id <  201101

应该只查看MV_MVNAME_201003 .. MV_MVNAME_201012

1 个答案:

答案 0 :(得分:0)

物化视图是“物化”。它是一个包含数据的物理表。

生成物化视图的查询仅在刷新数据时使用,而不是在查询时使用。

Oracle不知道数据来自何处(在您的情况下 - 来自几个不同表的联合),除非您以某种方式指定它,例如 - 列。

在您的特定情况下,您有列month_id,您可以对表进行分区。 指定月份或月份范围时,它将仅扫描相应的分区。

<强> UDPATE : 现在我更了解你的问题,但我不能给你一个更好的答案。你的问题与mviews无关。 Mviews可以是桌子。你的问题是一样的。您只想从一些表中选择动态。为此创建了分区。可能老狗知道一招......