instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(title,'手册')=0 相当于 title not like '%手册%'
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字段进行模糊查询会采用下面两种方式: 1.select * from tb where name like '%XX%'; 2.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优化,对比了一下,效果确实比like好些。》
发表评论