oracle 优化 instr 替换 =

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 优化 instr 替换 =相关的知识,希望对你有一定的参考价值。

优化方案 :
instr(字段,‘测试’) 替换 字段=‘测试’
是否可行?

参考技术A 这两者不等价啊,前者是查位置,得到的值是位置,数字型,后者就是全部字符串是否等于‘测试’ 参考技术B 单看这个条件,instr(字段,‘测试’) 没有字段=‘测试’ 条件效率高(没有instr(字段,‘测试’)函数索引的情况下)追问

通过执行计划,发现instr的开销、基数、字节都要比=的小。

追答

执行计划的不一定就正确。实际执行看一下

oracle 取指定字符串

数据库中存有字符串“25<ID<40”,我想分别取出其中的25和40,求大神指教

substr('25<ID<40', 0, 2); 等于25(从0位开始取2个字符)
substr('25<ID<40', -2); 等于40(倒着取2个字符)
参考技术A select substr(col1, 0, instr(col1, '<', 1) - 1),
substr(col1,
instr(col1, '<', 1) + 1,
(instr(col1, '<', -1) - instr(col1, '<', 1) - 1)),
substr(col1, instr(col1, '<', -1) + 1)
from (select '25<ID<40' as col1 from dual);

以上是关于oracle 优化 instr 替换 =的主要内容,如果未能解决你的问题,请参考以下文章

Oracle替换第一个字符

MySQL(Oracle)模糊查询 使用 instr () 替代 like 提升效率

Oracle 查询性能优化

Oracle 字符串操作 - SUBSTR 和 INSTR函数

oracle查询语句中in后面数据较多怎么优化

Oracle merge into 基于大数据量的优化方向