假设我有两张桌子,tab_a
and tab_b
.
我创建了一个如下所示的视图:
create view join_tabs as
(
select col_x as col_z from tab_a
union
select col_y as col_z from tab_b
);
如果我执行以下操作:
select * from join_tabs where col_z = 'BLAH';
If tab_a
索引col_x
and tab_b
索引col_y
,我们应该能够通过两个索引搜索来做到这一点。
但是,如果我可以在一个索引中对两个表建立索引,甚至为视图建立索引,以一种如果源表 (tab_a
or tab_b
) 改变。
Oracle 有没有办法做到这一点?
我达不到 Oracle 但我相信物化视图 http://download.oracle.com/docs/cd/B10500_01/server.920/a96520/mv.htm#45788正是这样做。
为物化视图选择索引
两个最常见的操作
物化视图是查询执行
并且快速刷新,并且每次操作
有不同的表现
要求。查询执行可能
需要访问的任何子集
物化视图键列,以及
可能需要加入并聚合
这些列的子集。
因此,查询执行通常
如果单列则表现最佳
位图索引定义在每个
物化视图键列。
在物化视图的情况下
仅包含使用快速的连接
刷新,Oracle建议
在列上创建索引
包含 rowids 来改进
刷新操作的性能。
如果物化视图使用
聚合体是快速刷新的,那么
自动创建索引
除非在中指定了 USING NO INDEX
创建物化视图
陈述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)