近期发现自己写的应用程序效率低下,登陆系统时速度超慢,后发现执行了一个全表查询语句,这个语句就将近耗时2分钟,在网上查询了一些优化方法,总结如下:
1、like
在查询表时,数据量比较大,尽量不要使用 like % 的语句,这样会导致语句使用全表查询,降低查询效率;
例如:select count(1) from ld_grxxsy where djdw like ‘GA14%’;
如果转换为:select count(1) from ld_grxxsy where instr(djdw,’GA14’) >0;
将会大幅提高查询效率,由原来查询2分钟反馈结果缩短至不到1秒。
2、instr函数
语法如下:
instr( string1, string2, start_position,nth_appearance )
string1:源字符串,要在此字符串中查找。
string2:要在string1中查找的字符串 。
start_position:代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
注意:
位置索引号从1开始。
如果String2在String1中没有找到,instr函数返回0。
示例:
SELECT instr(‘syranmo’,’s’) FROM dual; – 返回 1
SELECT instr(‘syranmo’,’ra’) FROM dual; – 返回 3
SELECT instr(‘syran mo’,’at’,1,2) FROM dual; – 返回 0
Oracle like语句优化
最新推荐文章于 2023-06-14 08:54:25 发布