【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写

news/2024/11/16 12:35:21/文章来源:https://www.cnblogs.com/YashanDB/p/18332871

问题现象

使用如下语句准备测试数据:

alter system set query_rewrite_enabled=force scope=both;
drop table test;
create table test(tid number, tname varchar2(30));
beginfor i in 1..100000 loopinsert 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的物化视图查询重写功能还是比较弱,急需改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/774132.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java Step 1 点击help按钮后发现: URL变成: url/Download?filename=help.docx 而回显: java.io.FileNotFoundException:{help.docx}而当我尝试尝试POST,发现文件成功下载:Step 2 发现可能的漏洞点后,结合WEB-INF相关知识(见文末) 可以下载WEB-INF/…

elasticsearch单机版—安装详细教程

一、ES介绍Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: (1).分布式实时文件存储,并将每一个字段都编入…

人工智能水平测试七级实操——智能环境检测系统

人工智能水平测试七级实操——智能环境检测系统 1 摄像头识别 自动检测摄像头前方是否出现运动的【红色】物体,如果出现显示与物体颜色相近的灯并保持长亮,并持续发出特定的报警声音;若物体停止运动,则灯保持长亮,报警声停止;无题离开视野范围内,则灯熄灭,报警停止; 2…

OI特殊性质总结——笔记(持续更新)

1.交换序列中\(x,y\), 逆序对奇偶性变换 交换 \(x,y\) 首先 $ k \leq x$ 部分的逆序对不变,\(k \geq y\) 部分不变 唯有 \(x \leq k \leq y\) 会变化 那么怎么变呢? 如图:原来逆序对 \(a + c\) ,现在逆序对: \(a + b + b + c + 1 = a + 2b + c + 1\) 那么我们换完会奇偶性…

[rCore学习笔记 019]在main中测试本章实现

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 批处理操作系统的启动和运行流程 要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾本章内容,思考批…

MySQL 学习笔记 进阶(存储过程 下,存储函数,触发器,锁 上)

存储过程存储过程-if判断语法IF 条件1 THEN...... ELSEIF 条件2 THEN...... ELSE...... END IF; 存储过程-参数 用法CREATE PROCEDURE 存储过程名称([ IN/OUT/INOUT 参数名 参数类型 ]) BEGIN-- SQL语句 END; 存储过程-case语法一CASE case_valueWHEN when_value1 THEN state…

TFA-收集日志及分析

下载https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=272133523880062&id=1513912.1&_afrWindowMode=0&_adf.ctrl-state=fghvcgapa_617a 安装[root@rhel75 ~]# ./ahf_setup AHF Installer for Platform Linux Architecture x86_64AHF Installa…

C# 文件操作

本篇主要记录C#操作文件 相对路径在项目文件...\bin\Debug 目录下 一、写入读取文件写入/// <summary>/// initial 文件写入/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private vo…

Python 环境配置(二)安装jupyter、matplotlib、numpy库

Python 环境配置(二)安装jupyter、matplotlib、numpy库 一、numpypip install numpy二、matplotlibpip install matplotlib 三、jupyter 1、anaconda自带Jupyter 2、pycharm 插件只有 Pycharm 的 Professional 版才支持 Jupyter Notebook,请注意版本3、新建文件#%%import nu…

Meta SAM 2:实时分割图片和视频中对象;Apple Intelligence 首个开发者测试版发布丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

Python 环境配置(一)Python、Anaconda、Pycharm的安装

Python 环境配置(一)Python、Anaconda、Pycharm的安装本人之前已安装一次,此次为卸载之后的重新安装。。。一、Python 1、下载 下载官网: 下载链接:Download Python | Python.org勾选 添加到路径 (环境变量)next如图所示之后点close关闭2、验证 win+R cmd: python退出 …

C++ - VS2019配置pthread线程库

1. 说明 在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip 解压后用得到的只有Pre-built.2文件夹下的文件。2. 配置 如下图分别配置三大项:包含目录-->...pthreads-w32-2-9-1-releas…