mysql的like查询全表扫导致超时


在处理一个接口超时的时候,分析后发现是sql中like导致全表扫描。

like 语法可以改成 LOCATE('keyword', `field`)>0;其中keyword是入参关键字,field是数据库对应的字段值。

举例:

like:SELECT `column` FROM `table` WHERE field like concat('%',#{keyword},'%')

locate : SELECT `column` FROM `table` WHERE locate ('keyword', `field`) >0

使用like,还是使用locate  position高效的前提条件是查询的字段上面已经建立起了索引。