当前位置: 首页 > article >正文

达梦clob字段查询优化

达梦clob字段查询优化

准备测试环境

创建测试表

CREATE TABLE user_info (
    uid VARCHAR(50) PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    oid CLOB 
) 

生成10万条记录
在这里插入图片描述

查询方式

Like查询方式

select * from "SYSDBA"."USER_INFO" WHERE OID LIKE 'AZCONGaT%';

在这里插入图片描述
在这里插入图片描述

从查询结果和执行计划可以看到,先是表扫返回了10万条记录,这样查询耗时80毫秒。

正则表达式

select * from "SYSDBA"."USER_INFO" WHERE REGEXP_LIKE(OID,'AZCONGaT');

在这里插入图片描述

在这里插入图片描述

从查询结果和执行计划可以看到,同样是先走表扫返回结果集10万,但是后面的结果集为5k,所以耗时更长,607毫秒。

创建全文索引

-- 创建全文索引(事务同步)
CREATE CONTEXT INDEX idx_uinfo_oid ON USER_INFO(OID) 
LEXER DEFAULT_LEXER 
SYNC TRANSACTION;

在这里插入图片描述

更新全文索引(完全更新)
alter context index idx_uinfo_oid on USER_INFO rebuild;
在这里插入图片描述

执行查询
在这里插入图片描述
在这里插入图片描述

从查询结果和执行计划可以看到,走全文索引的代价较低,耗时2毫秒。

另外,全文索引不支持模糊查询,如*、%等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证未更新全文索引的查询

insert into "SYSDBA"."USER_INFO"("UID", "NAME", "OID") 
VALUES('xxxxx', '测试', 'ABCDBHBJBKBKANHS');

在这里插入图片描述

可以看到查询通过走全文索引,但是没有返回结果
在这里插入图片描述
在这里插入图片描述

更新全文索引(增量更新)
在这里插入图片描述

再次查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更新索引之后,可以通过全文索引查询返回正确的结果。

总结

对于Clob等类型的字段,可通过创建全文索引提高查询效率。
但是需要注意全文索引的维护,比如全文索引的更新,若新数据插入后没有更新全文索引则将无法通过该索引查询到新数据,全文索引的更新包括两种方式:完全更新(代价较大)和增量更新(代价较小)。

更多详细资料可前往达梦社区:https://eco.dameng.com


http://www.kler.cn/a/556165.html

相关文章:

  • Java Web开发实战与项目——Spring Boot与Redis实现缓存管理
  • 直播美颜工具架构设计与性能优化实战:美颜SDK集成与实时处理
  • 如何在Vue中更优雅地处理403错误?
  • 面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
  • 2025年2月一区SCI-海市蜃楼搜索优化算法Mirage search optimization-附Matlab免费代码
  • 初等数论--乘法逆元
  • 如何教计算机识别视频中的人类动作
  • 计算机网络之TCP的可靠传输
  • 【VSCode】MicroPython环境配置
  • 安全问答—评估和应用安全治理原则相关
  • 从CNN到Transformer:遥感影像目标检测的技术演进(矿产勘探、精准农业、城市规划、林业测量、军事目标识别和灾害评估等)
  • 23.3 HtmlElement类
  • 二叉树的前序、中序、后序遍历(递归和非递归实现)
  • MySQL 中的回表是什么?MySQL 中使用索引一定有效吗?如何排查索引效果?在 MySQL 中建索引时需要注意哪些事项?
  • Docker 的安全配置与优化(一)
  • STM32使用NRF2401进行数据传送
  • 【YOLOv8】损失函数
  • leetcode刷题第十三天——二叉树Ⅲ
  • 【JMeter使用-2】JMeter中Java Request采样器的使用指南
  • 【论文精读】VLM-AD:通过视觉-语言模型监督实现端到端自动驾驶