【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写
问题现象
使用如下语句准备测试数据:
alter system set query_rewrite_enabled=force scope=both;
drop table test;
create table test(tid number, tname varchar2(30));
begin
for i in 1..100000 loop
insert into test values(i, i||'abcd');
end loop;
end;
/
commit;
drop materialized view mv_1;
create materialized view mv_1
as
select * from test where tid = 66;
alter materialized view mv_1 enable query rewrite;
使用select * from test where tid = 66以及select tid,tname from test where tid = 66,均无法进行查询重写:

使用带双引号的大写字段名才可以进行查询重写:

问题的风险及影响
物化视图无法进行查询重写,影响查询性能
问题影响的版本
所有yashandb版本
问题发生原因
目前yashandb在进行物化视图的查询重写时,使用的是select中的列名匹配,未根据查询的语义进行匹配
解决方法及规避方式
在select中使用带双引号的大写列名
问题分析和处理过程
在存储物化视图时,create 物化视图如果下发的是select *,那么yashandb会将select *展开,存储为列名

在matchCompactedSQLText中,使用的是列名进行匹配。
1、如果后面想进行查询重写的语句是select *,目前的实现是在select *展开以前进行列的匹配,很明显,与dba_mviews中存储的select "TID","TNAME"是匹配不上的
2、如果后面想进行查询重写的语句是select tid,tname,因为大小写匹配不上
3、如果后面想进行查询重写的语句是select TID,TNAME,因为没有用双引号包含,依然匹配不上
以上三种情况均无法进行查询重写
经验总结
目前yashandb的物化视图查询重写功能还是比较弱,急需改进。
【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写的更多相关文章
- sqlserver 创建索引 物化 视图
索引视图: create view Test WITH SCHEMABINDING as select Id, Name from [dbo].[InterfaceCallSetting]creat ...
- Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create materialized ...
- Oracle远程数据建物化视图(materialized)创建简单记录,以及DBLINK的创建
目的:实现远程数据库访问及其相应表的定时同步 一.远程数据库dblink的创建 select * from dba_db_links; select * from user_sys_privs;--查 ...
- Oracle 物化视图 说明
一. 物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...
- 转: Oracle中的物化视图
物化视图创建语法:CREATE MATERIALIZED VIEW <schema.name>PCTFREE <integer>--存储参数PCTUSED <intege ...
- [terry笔记]物化视图 materialized view基础学习
一.物化视图定义摘录: 物化视图是包括一个查询结果的数据库对像(由系统实现定期刷新数据),物化视图不是在使用时才读取,而是预先计算并保存表连接或聚集等耗时较多的操作结果,这样在查询时大大提高了 ...
- Oracle物化视图梳理
--物化视图可以分为三种类型:* 包含聚集的物化视图* 只包含连接的物化视图* 嵌套物化视图三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大. --物化视图创建方式(Build M ...
- ORACLE物化视图(物理视图)
百度文库 http://wenku.baidu.com/view/f78f55c68bd63186bcebbc4b.html ORACLE物化视图 一.------------------------ ...
- Oracle EBS 物化视图
怎么理解物化视图呢,先随意拿一个建物化视图的例子看一下. create materialized view EBS_ACCOUNTS_HIERARCHY_MV refresh complete on ...
- Oracle物化视图的一般使用
普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储 ...
随机推荐
- VS2015 、VS2017 MFC输出日志到控制台窗口
原来使用VS2010建立的项目,安装VS2017后,发现MFC无法通过调试窗口输出printf打印的内容,在CSDN上找到了一个解决方案,使用后恢复打印调试信息功能,推荐如下: https://blo ...
- node.js 手稿
- mybatis log4j打印sql语句
依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</a ...
- C++ Cast And Go Cast
C++ A static_cast can be used to explicitly convert between related pointer types, such as void* and ...
- 算法金 | 最难的来了:超参数网格搜索、贝叶斯优化、遗传算法、模型特异化、Hyperopt、Optuna、多目标优化、异步并行优化
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 215/10000 为模型找到最好的超参数是机器学习实践中最困难的部分之一 ...
- wangEditor增加源码模式,添加查看源码功能
wangEditor是一款轻量级的富文本编辑器.使用还比较方便,但是缺少查看源码模式,需要我们自定义一个menu给增加查看源码模式 下面是wangEditor增加源码模式的代码: <!DOCTY ...
- Vue export & export default & import 总结
Vue export & export default & import 总结 by:授客 QQ:1033553122 1. 实践环境 Vue 2.9.6 2. 简介 在ES6 ...
- MySQL 递归查询实践总结
MySQL复杂查询使用实例 By:授客 QQ:1033553122 表结构设计 SELECT id, `name`, parent_id FROM `tb_testcase_suite` 说明: ...
- M1 Mac安装anaconda3
1.正常安装 首先进入官网https://www.anaconda.com/ 下载,安装 自行大胆的安装 2.环境配置 直接安装完成后,代码文件的存储路径为默认路径,为了更好的管理代码文件我们需要更换 ...
- 我用Awesome-Graphs看论文:解读Naiad
Naiad论文:<Naiad: A Timely Dataflow System> 前面通过文章<论文图谱当如是:Awesome-Graphs用200篇图系统论文打个样>向大家 ...