达梦sql优化:关于模糊匹配前后百分号的使用小结

2023-11-07

1、生成测试数据
CREATE TABLE TB_LIKE (A INT,B VARCHAR2(100));
INSERT INTO TB_LIKE SELECT LEVEL,LEVEL||‘太阳光’||LEVEL FROM DUAL CONNECT BY LEVEL<=6000;
INSERT INTO TB_LIKE SELECT LEVEL,LEVEL FROM DUAL CONNECT BY LEVEL<=3000000;
COMMIT;

DROP INDEX TEST_INDEX_2;
2、收集统计信息
CALL DBMS_STATS.GATHER_TABLE_STATS(‘SYSDBA’,‘TB_LIKE’,NULL,100);

二、测试验证
SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE’USE_PLN%’ OR PARA_NAME LIKE’RS_CAN_%’
–0
1、测试场景
SELECT /+NO_INDEX(TB_LIKE TEST_INDEX_1)/COUNT(*) FROM TB_LIKE WHERE B LIKE’%太阳光%’;
1 #NSET2: [373, 1, 48]
2 #PRJT2: [373, 1, 48]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [373, 1, 48]; grp_num(0), sfun_num(1) slave_empty(0)
4 #SLCT2: [373, 150300, 48]; exp11 > 0
5 #CSCN2: [373, 3006000, 48]; INDEX33555468(TB_LIKE)

2、测试方法1-创建单索引
CREATE INDEX TEST_INDEX_1 ON TB_LIKE(B);

SELECT COUNT(*) FROM TB_LIKE WHERE B LIKE’%太阳光%’;
1 #NSET2: [373, 1, 48]
2 #PRJT2: [373, 1, 48]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [373, 1, 48]; grp_num(0), sfun_num(1) slave_empty(0)
4 #SLCT2: [373, 150300, 48]; exp11 > 0
5 #SSCN: [373, 3006000, 48]; TEST_INDEX_1(TB_LIKE)
虽然执行计划中利用了索引,但效果并不明显。

3、测试方法2-创建函数索引及调整参数LIKE_OPT_FLAG

3.1、LIKE_OPT_FLAG参数介绍:
–LIKE 查询的优化开关。

–0:不优化;

–1:对于LIKE 表达式首尾存在通配符的情况,优化为POSITION()函数;对于 LIKE 表达式首部存在通配符,并且条件列存在 REVERSE()函数索引时,优化为 REVERSE()函数;

–2:对于 COL1 LIKE COL2 || '%'的情况,优化为POSITION()函数;4:对于 COL1 LIKE ‘A’||‘B%’的情况,优化为 COL1 LIKE ‘AB%’。

–支持使用上述有效值的组合值,如 5 表示同时进行 1 和 4 的优化

3.2、调整参数
SP_SET_PARA_VALUE(‘1’,‘LIKE_OPT_FLAG’,1);
将此参数调整为1,如果已经包含1,不用修改。

3.3、创建函数索引验证效果
CREATE INDEX TEST_INDEX_2 ON TB_LIKE(POSITION(‘太阳光’,B));

SELECT COUNT(*) FROM TB_LIKE WHERE B LIKE’%太阳光%’;
–执行成功, 执行耗时1毫秒. 执行号:71
1 #NSET2: [21, 1, 52]
2 #PRJT2: [21, 1, 52]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [21, 1, 52]; grp_num(0), sfun_num(1) slave_empty(0)
4 #SSEK2: [21, 150300, 52]; scan_type(ASC), TEST_INDEX_2(TB_LIKE), scan_range(0,max]

4、测试方法3-创建全文索引及改写SQL

4.1、创建中文最少词法分析器-全文索引
CREATE CONTEXT INDEX TEST_INDEX_3 ON TB_LIKE(B) LEXER CHINESE_LEXER;
ALTER CONTEXT INDEX TEST_INDEX_3 ON TB_LIKE REBUILD;
创建完全文索引需执行上面的语句填充一次数据。

4.2、验证效果
SELECT COUNT(*) FROM TB_LIKE WHERE CONTAINS(B,‘太阳光’);
–执行成功, 执行耗时732毫秒. 执行号:768
1 #NSET2: [0, 1, 56]
2 #PRJT2: [0, 1, 56]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [0, 1, 56]; grp_num(0), sfun_num(1) slave_empty(0)
4 #BLKUP2: [0, 150300, 56]; INDEX33555475(CTI T E S T I N D E X 3 TEST_INDEX_3 TESTINDEX3N)
5 #DISTINCT: [0, 150300, 56]
6 #CTNS: [0, 150300, 56]; INDEX33555472(CTI T E S T I N D E X 3 TEST_INDEX_3 TESTINDEX3I)

SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE’%MONITOR%’;
SF_SET_SESSION_PARA_VALUE(‘MONITOR_SQL_EXEC’,1);
CALL ET(106);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

达梦sql优化:关于模糊匹配前后百分号的使用小结 的相关文章

  • C语言位操作

    C语言位操作 1 位与 按照二进制位一一对应 只有全1才为真 否则为假 特定位置置0用位与 2 位或 按照二进制 有真则真 全假才假 特定位置置1用位或 3 位取反 按照二进制位 1变为0 0变为1 逻辑取反 数当成整体 不变二进制 不是0
  • 错误 Angular2 Can't bind to 'routerLink' since it isn't a known property of 'a'

    Can t bind to routerLink since it isn t a known property of a 解决办法 检查是否没有 import RouterModule import RouterModule from a
  • 阿里java编程规范之异常处理、安全规约、MySql数据库

    注 本文内容整理自 阿里java编码规范 除 编程规约 外的其它规则 异常处理 强制 1 Java类库中可以通过预检查方式规避的 RuntimeException不应该通过catch的方式来处理 如 IndexOutOfBoundsExce
  • LruCache基本使用和原理分析

    最近在研究时区问题时 时区的底层实现涉及到BasicLruCache集合的使用 故而对LruCache做了部分的了解 BasicLruCache 是 Android 提供的一个简单的 LRU 缓存实现 但在标准的 Java 类库中并不存在
  • 基于SpringBoot的校园志愿者管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 HTML Vue 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse
  • windows 安装 minio

    windows 安装 minio 1 通过powershell 安装 Invoke WebRequest Uri https dl min io server minio release windows amd64 minio exe Ou
  • 小试一下Google App Engine

    这两天关心了一下云 所以也看到google app engine了 今天小小试了一下 做下记录 主页 登录http code google com intl zh CN appengine 下载 App Engine SDK GoogleA
  • 使用StarRocks导入大数据:详细教程及示例代码

    使用StarRocks导入大数据 详细教程及示例代码 StarRocks是一个快速 可扩展的大数据分析引擎 它提供了高性能的数据导入功能 在本文中 我们将介绍如何使用StarRocks导入大数据 并提供相应的示例代码 步骤1 准备工作 在开
  • 云计算平台常用命令

    云计算IAAS篇 mysql篇 mysql uroot p000000 使用root账号登录mysql use mysql 切换到mysql层 show tables 查询mysql数据库列表 select from mysq

随机推荐

  • linux高性能服务器开发之TCP/IP协议族(1)

    TCP IP协议族体系结构以及主要协议 每层协议完成不一样的功能 上层协议得借助下层协议提供的服务 计网 数据链物层 数据链物层实现网卡接口的网络驱动程序 网络驱动程序隐藏一些 物理层不同电气特性 为上层提供一个统一的接口 常用的协议ARR
  • 【中兴ZXV10 B860A1.1】

    这里写自定义目录标题 开启adb 开启adb 部分盒子的ADB调试位置 在设置页面中可以有开启开发者选项 地区界面不同 位置不同有的在设置里 如果找不到 直接按住遥控器 返回 不放 5秒后 快速不停按 左键 点击 打开ADB调试 这时侯让你
  • 2021-08-04 读书笔记:Python 学习手册(2)

    读书笔记 Python 学习手册 2 结于2021 08 04 OREILY的书籍 可读性很强 入门类 而且这本书很厚 第三部分 语句和语法 第四部分 函数 第三部分 语句和语法 第10章 Python语句简介 Python是面向过程的 基
  • 程序或-内存区域分配(五个段)--终于搞明白了

    一 在学习之前我们先看看ELF文件 ELF分为三种类型 o 可重定位文件 relocalble file 可执行文件以及共享库 shared library 三种格式基本上从结构上是一样的 只是具体到每一个结构不同 下面我们就从整体上看看这
  • DC系列漏洞靶场-渗透测试学习复现(DC-1)

    最近闲着冲浪玩发现了DC系列漏洞靶场 下载了8个靶场 DC 1到DC 8 从信息收集到最后拿到超级管理员权限 可以说几乎贯穿了渗透测试的每一步 寻找一个个flag 通过flag中的指引内容 帮助我们拿到最后的root身份 过程还是挺有趣的
  • Jvm之垃圾回收机制

    判断一个对象是否可被回收 1 引用计数算法 给对象添加一个引用计数器 当对象增加一个引用时计数器加 1 引用失效时计数器减 1 引用计数为 0 的对象可被回收 两个对象出现循环引用的情况下 此时引用计数器永远不为 0 导致无法对它们进行回收
  • vue中使用闭包(例如防抖和节流)失效问题(直接调用)

    文章目录 1 出现问题 2 问题原因 3 解决办法 4 防抖节流函数 1 出现问题 防抖 节流使用无效 例如防抖 按钮点击多次依旧执行多次 gt 查看是闭包无效 定义的局部变量依旧为初值 gt 没有相应清除定时器
  • Ubuntu安装MonoDevelop

    安装步骤 在ubuntu终端执行下面步骤代码 第一步 安装源 根据自己的版本在Ubuntu上安装Mono 运行下面代码授权注册repo源并更新软件列表 Ubuntu 18 04 sudo apt install apt transport
  • Vue3之Vuex

    1 Vuex的基本使用 2 Module 2 1 vuex中模块化的基本使用 2 2 在命名空间中访问全局内容 3 vuex的typescript用法 3 1 不使用模块化 3 2 使用模块化 1 Vuex的基本使用 vuex的安装 npm
  • python利用selenium(webdriver chrome)模拟登陆获取cookie

    我是在windows下进行实验的 准备工作 1 安装python环境 2 python安装selenium插件 执行以下命令就行 pip install selenium 3 Windows下配置webdriver chrome 如果以上准
  • 天气预报小程序 微信小程序期末大作业(含文档)

    天气预报微信小程序 运行正常无错误 下载链接在文末 详情如下图 点我下载资源 https download csdn net download weixin 43474701 58813129
  • golang中的TLS

    HTTP和 HTTPS https和http都属于应用层 基于TCP 以及UDP 协议 但是不同的是 HTTP 缺省工作在TCP协议80端口 HTTPS缺省工作在TCP协议443端口 HTTPS服务不同于HTTP服务 HTTPS是HTTP
  • 数字IC,三大核心代码架构之计数器(verilo实列)

    简介 计数器设计是数字IC设计 的核心 也是最常用的代码片段 通过记录时钟周期个数 可以控制电路的时序 通过计数器可以实现测量 计数 状态控制 分频 计数器有触发器和逻辑门共同构成 计数器设计要素 1 初始值是多少 这里要考虑的是复位信号和
  • Swagger统一Authorization认证

    Swagger统一Authorization认证 1 Swagger Authorization 2 Code 3 Awakening 摘自 https blog csdn net qq 23035335 article details 1
  • python离线安装wheel_使用 pip wheel 实现 Python 依赖包的离线安装

    pip python 依赖 安装 有时候 需要部署 Python 应用的服务器没有网络连接 这时候 你就要把整个 Python 应用做成离线安装包 借助 wheel 很容易就可以实现 首先 你的开发机器上要安装 wheel pip inst
  • vlunhub系列之Momentum2

    靶机Momentum2 如果主机发现发现不了ip地址请看这里 https hackergu com vulnhub ip arp scan主机发现nmap端口扫描 端口扫描 发现并没有可以利用的内容 我们使用dirb nikto 以及dir
  • 发html邮件乱码 java,Java发送邮件时标题和发件人乱码

    Java发送邮件时标题和发件人乱码 最近碰到一个问题 Java发送邮件时 查看邮箱结果 发件人及邮件标题正文全部乱码 通过翻阅资料 原因及解决方法如下 Set Subject 头字段 message setSubject MimeUtili
  • 基于 Web 实现 m3u8 视频播放的简单应用示例

    实现思路 将视频 MP4 等 转换为 M3U8 视频的服务 可以按照以下步骤进行操作 将视频 MP4 等 转换为 M3U8 在服务中 使用适当的工具 如 FFmpeg 将接收到的视频 MP4 等 转换为 M3U8 格式 这将生成一个包含视频
  • AMap + echarts、google map + d3.js分别实现数据可视化中的飞线图(迁徙图)

    首先肯定是给出demo啦 演示demo 直接到左侧选择框中选择View taxi flow里面随便选个日期 总体介绍 最近由于工作室项目需要做一个数据可视化平台 这个平台最终是交由国外人使用的 而国内的高德地图在国外是访问很慢 所以只能使用
  • 达梦sql优化:关于模糊匹配前后百分号的使用小结

    1 生成测试数据 CREATE TABLE TB LIKE A INT B VARCHAR2 100 INSERT INTO TB LIKE SELECT LEVEL LEVEL 太阳光 LEVEL FROM DUAL CONNECT BY