Oracle中like走不走索引要根据具体的写法来判断。
例如:有表student,表中有字name,age。name上有索引
创建索引语句如下:
create index idx_student_001 on student(name);
1、语句1
select * from student where name like '%张三%';
此时,SQL是不走索引的。
2、语句2
select * from student where name like '%张三';
此时,SQL也是不走索引的。
3、语句3
select * from student where name like '张三%';
此时,SQL是走索引的
可以看出,当使用like语句进行模糊搜索时,并不是所有的情况都不走索引,因为Oracle的索引针对立刻语句有前导性,语句3可以找到索引点,所以会走索引。
观察发现语句2从后面开始找也可以找到索引点,此时我们只需要建立反向索引就可以使语句走索引了,语句如下:
create index idx_student_002 on student(reverse(name));
语句1由于从前从后都找不到哦索引点所以不会走索引