Mysql Like查询优化

现在很多的业务都需要用到查询,而且都是模糊查询,对于少量的数据模糊查询完全够用,不需要进行优化,但是一旦数据量上升模糊查询的效率变得很差,在mysql中模糊查询主要是使用like来实现,最近发现总结了一下like的优化,like使用的三种情况:

  •  Like  "%keyword"
  •  Like  "%keyword%"
  •  Like  "keyword%"

使用mysql来解析这三种情况的执行过程:

  1. Like  "%keyword%":

EXPLAIN SELECT * FROM wp_posts WHERE post_name LIKE '%chrome%';

2. Like  "%keyword"

3. Like  "keyword%"

通过以上三种情况已看出“%like%”,无法使用索引的,优化的第一个方向就是使用将SQL优化成已关键词开头或者结尾的SQL。另外一个优化的方向是使用mysql的LOCATE,INSTR,REGEXP三个函数优化。

最后如果是数据量过大的情况,对搜索时效性特别高,考虑使用独立的搜索引擎来做,如Lucene,ES。

 

Mysql数据库drop、truncate和delete的区别
Tags: