当前位置: 首页 > 面试题库 >

视图索引(Oracle)

闻人越
2023-03-14
问题内容

可以说我有两个表,tab_atab_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';

如果是tab_aindexcol_xtab_bindex col_y,那么我们应该可以通过两个索引搜索来做到这一点。

但是,如果我可以在一个索引中对两个表建立索引,甚至对视图建立索引,那都会很好,如果源表(tab_atab_b)发生更改,该方法可以立即自动更新。

在Oracle中有没有办法做到这一点?


问题答案:

我不能与Oracle相提并论,但是我相信物化视图可以做到这一点。

为物化视图选择索引

物化视图上最常见的两个操作是查询执行和快速刷新,并且每个操作都有不同的性能要求。查询执行可能需要访问实例化视图键列的任何子集,并且可能需要在这些列的子集上进行联接和聚合。因此,如果在每个实例化视图键列上定义了单列位图索引,则查询执行通常会表现最佳。

如果实例化视图仅包含使用快速刷新的联接,则Oracle建议在包含行ID的列上创建索引,以提高刷新操作的性能。

如果使用聚合的物化视图可快速刷新,则除非在CREATE MATERIALIZED VIEW语句中指定了USING NO INDEX,否则将自动创建索引。



 类似资料:
  • 一、视图 1.1 简介 Hive 中的视图和 RDBMS 中视图的概念一致,都是一组数据的逻辑表示,本质上就是一条 SELECT 语句的结果集。视图是纯粹的逻辑对象,没有关联的存储 (Hive 3.0.0 引入的物化视图除外),当查询引用视图时,Hive 可以将视图的定义与查询结合起来,例如将查询中的过滤器推送到视图中。 1.2 创建视图 CREATE VIEW [IF NOT EXISTS] [

  • 基于 laravel blade 模板引擎改写, 支持原始 blade 模板引擎的语法. composer require hyperf/view-engine 生成配置 php bin/hyperf.php vendor:publish hyperf/view-engine 默认配置如下 本组件推荐使用 SYNC 的渲染模式,可以有效减少进程间通信的损耗 return [ 'engi

  • 问题内容: 我从2005年起在MySQL论坛上找到了一个帖子,但是最近才发布。基于此,这是不可能的。但是在3-4年内会有很多变化。 我正在寻找的是一种在视图上建立索引但使被查看的表保持未建立索引的方法。索引会损害写入过程,并且该表的写入频率非常高(索引会减慢所有内容的爬取速度)。但是,缺少索引使我的查询非常缓慢。 问题答案: 我不认为MySQL支持您需要的物化视图,但无论如何在这种情况下它不会帮助

  • 我在开往赫洛库时不断收到此错误。构建过程成功,但后来我得到这个错误。无法弄清楚问题所在,路径不应该是src /服务器/视图吗?一切都在本地工作。 我使用webpack tu bundle我的服务器端代码,我使用html-webpack插件将我的index.ejs模板从视图文件夹注入到webpack bundle。 网络包.配置.服务器. js 产品服务器.js 文件夹结构 如你所见,我有index

  • 问题内容: 我正在使用MSSQL Server 2008 R2,当我偶然发现索引视图时,我正在尝试优化视图。不幸的是,我的大多数视图都使用左外部联接,而索引视图不支持这种联接。经过一堆研究,让我感到困惑的是最好的解决方法。我看到的方式有以下几种选择: 1) 使用技巧将左联接转换为内部联接,以使用“ OR(IsNull(a)AND IsNull(b))”模拟左联接 我在几个地方找到了该解决方案,但是

  • 假设我有一个数据帧 我从我的数据子集创建另一个数据帧: 是否保存了中这些元素的副本?有没有办法创建该数据的?如果是这样,如果我尝试修改此视图中的数据会发生什么情况?Pandas是否提供任何类型的写时拷贝机制?