千家信息网

Oracle中Like与Instr模糊查询性能的示例分析

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章主要介绍了Oracle中Like与Instr模糊查询性能的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。instr(t
千家信息网最后更新 2025年02月22日Oracle中Like与Instr模糊查询性能的示例分析

这篇文章主要介绍了Oracle中Like与Instr模糊查询性能的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(title,'手册')=0 相当于 title not like '%手册%'

t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。下面是一些测试结果:

SQL> set timing on SQL> select count(*) from t where instr(title,'手册')>0;  COUNT(*) ----------    65881 Elapsed: 00:00:11.04 SQL> select count(*) from t where title like '%手册%';  COUNT(*) ----------    65881 Elapsed: 00:00:31.47 SQL> select count(*) from t where instr(title,'手册')=0;  COUNT(*) ----------  11554580 Elapsed: 00:00:11.31 SQL> select count(*) from t where title not like '%手册%';  COUNT(*) ----------  11554580

另外,我在结另外一个2亿多的表,使用8个并行,使用like查询很久都不出来结果,但使用instr,4分钟即完成查找,性能是相当的好。这些小技巧用好,工作效率提高不少。通过上面的测试说明,ORACLE内建的一些函数,是经过相当程度的优化的。

instr(title,'aaa')>0 相当于like instr(title,'aaa')=0 相当于not like

特殊用法:

 select  id, name from users where instr('101914, 104703', id) > 0;

它等价于

select  id, name from users where id = 101914 or id = 104703;

使用Oracle的instr函数与索引配合提高模糊查询的效率

一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:

select * from tb where name like '%XX%'; select * from tb where instr(name,'XX')>0;

若是在name字段上没有加索引,两者效率差不多,基本没有区别。

为提高效率,我们在name字段上可以加上非唯一性索引:

create index idx_tb_name on tb(name);

这样,再使用

select * from tb where instr(name,'XX')>0;

这样的语句查询,效率可以提高不少,表数据量越大时两者差别越大。但也要顾及到name字段加上索引后DML语句会使索引数据重新排序的影响。

感谢你能够认真阅读完这篇文章,希望小编分享的"Oracle中Like与Instr模糊查询性能的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

手册 查询 效率 字段 数据 篇文章 索引 性能 函数 语句 测试 示例 分析 差别 结果 特殊 差不多 一般来说 价值 兴趣 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苹果手机服务器安全连接 玉环农商银行软件开发岗好不好 数字软件开发价格 企业有几大业务领域数数据库 在数据库如何创建关系表 查询数据库数据总数的方法 com串口有一拖二接服务器的 网络安全指挥中心主要职责 使用命令启动和关闭数据库服务 有关网络安全宣传策划 软件开发管理文件模板下载 培训网络安全好找工作吗 软件开发职业的市场需求 软件开发从网上哪里学 2020年云南省网络安全周 用vb删除数据库中的数据 生物启发网络技术 网络安全部队提供保护 服务器 文件 性能 服务器如何加装无线网卡 计算机网络安全性考作业一 辽宁软件开发技术服务有哪些 网络安全监管政策 系统数据库包含哪些内容 网络安全审计工作流程 工程软件开发技术上机难吗 互联网电子科技公司经营范围 网络安全设计思路 数据库自动备份设置是什么 读一个文件每一行数据库
0