模糊查询like %keyword%.不走索引。有没有办法让它走索引

模糊查询like %keyword%.不走索引。有,没有办法让它走索引

你好。

该操作意义不大,建议优化下 sql。或者尝试 tiflash 加快 scan

另外看 通过 hit 或者 force inex 的方式是否满足。

1 个赞

你好,

研发同学建议可以试用下 表达式索引,该功能属于实验特性,可以先看下连接内容,下图为实操:

https://pingcap.com/docs-cn/stable/sql-statements/sql-statement-create-index/#表达式索引

1 个赞

表达式索引 需要已知“keyword” 场景是在有限~:joy:

我理解表达式索引本身就是比较 hack 的做法?就像你说的是对数据分布比较了解再去使用。

700多万条数据,节省了将近6秒钟,很不错的建议

1 个赞

如果过滤出的数据不是很多的话,先用覆盖索引的思想单独查这一个列跟主键,然后拿主键去拿数据

有这种需求,数据量不大的话还好,数据量大的情况下最好是全文检索 可以考虑redis或es

强制走索引。

%这个条件本来就不适合索引查找的。

%在开头是不会走索引的,只有%在后面才会走索引

一般数据库这样都不能的。要从设计上改变。
除非你是全文索引场景,oracle mysql pg都有全文。但是如果要彻底的那是es的范畴。

左边 % 是走不了索引的,这个mysql也一样,建议生产左边不加%