两边都存在模糊查询的通配符 % 如何走索引
时间: 2023-08-11 17:33:33 浏览: 255
SQL查询语句通配符与ACCESS模糊查询like的解决方法
如果模糊查询通配符 % 同时出现在查询字符串的两边,例如:
```
SELECT * FROM my_table WHERE name LIKE '%john%';
```
这种情况下,Oracle 通常无法使用索引进行查询,因为它无法确定哪些索引键值可以匹配查询字符串。
但是,如果你使用 Oracle 11g 或更高版本,可以考虑使用 Oracle Text 以及全文索引来进行模糊查询。具体步骤如下:
1. 创建全文索引
```
CREATE INDEX my_index ON my_table(name) INDEXTYPE IS CTXSYS.CONTEXT;
```
2. 使用 CONTAINS 函数进行查询
```
SELECT * FROM my_table WHERE CONTAINS(name, 'john', 1) > 0;
```
这样可以确保 Oracle 使用全文索引进行模糊查询,并且可以获得较好的查询性能。但需要注意的是,全文索引需要占用较大的磁盘空间,因此需要慎重考虑是否使用。
阅读全文