Oracle中Like和Instr模糊查询性能实例分析

分类:编程技术 时间:2024-02-20 15:27 浏览:0 评论:0
0
本文主要介绍Oracle中Like和Instr模糊查询性能的实例分析。有一定的参考价值。有兴趣的朋友可以参考一下。希望您读完这篇文章后能有所收获。让小编带你一起来了解一下吧。

instr(title,'Manual')>0 相当于 title like '%Manual%' instr(title,'Manual')=1 相当于 title like 'Manual %' instr(title,'Manual')=0相当于title不像'%Manual%'

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

SQL> settiming on SQL> select count(*) from t where instr(title,'Manual')>0 ; COUNT(*) ---------- 65881 已过去: 00:00:11.04 SQL> select count(*) from t where title like '%MANUAL%'; COUNT(*) ----- ----- 65881 已过去: 00:00:31.47 SQL> select count(*) from t where instr(title,'Manual')=0; COUNT(*) ---------- 11554580 已过: 00:00:11.31 SQL> select count(*) from t where title not like '%MANUAL%'; COUNT(*) ---------- 11554580

另外,我正在建另外一个2亿多的表,使用8并行,使用like查询不会产生a的结果时间比较长,但是使用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字段进行模糊查询:

从 tb 中选择 *,其中名称如“%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;< /Pre>

这样的语句查询效率可以提高很多。表数据量越大,两者的差异就越大。但我们也必须考虑到o 考虑 DML 语句的影响,这些语句将在名称字段添加到索引后重新排序索引数据。

感谢您仔细阅读本文。希望小编分享的这篇文章《Oracle中Like和Instr模糊查询性能实例分析》对大家有所帮助,也希望大家支持并关注行业资讯频道。更多相关知识等待您学习!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle中Like和Instr模糊查询性能实例分析

用户评论