分析为什么mysql中like模糊查询效率低
2017-08-25 12:24
741 查看
相比update和insert,一般查询应该是数据库中操作最频繁的。而在有些应用场景需要用到like模糊查询,那么对于大数据,查询的时候就要注意了。
现在来分析一下为什么like语句查询的效率会很低,测试数据共4000000条,如下图:
第一步:不使用索引
下图可以看出,不使用索引的时候普通查询与like查询的耗时相当,like略长,这也是必然的,因为它要进行额外的算法。
第二步:使用索引
如下图,使用索引后,普通查询的耗时基本算是秒查,非常快;而like查询还是耗时一秒多。
第三步:分析原因
如下图,用explain分析一下,此时我们立刻明白了,普通查询用到了索引,但是like语句没有用到索引。
所以,照成mysql中like查询效率低下的原因是:在有些情况下,like查询使用不到索引,会扫描全表。
最后,补充一下,like语句有时候也是可以用到索引的,如下图,如果我们查询的时候写成“like 'dd_'或者like 'dd%'”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是比普通查询耗时要多很多。
因此,当表的数据量比较大的时候,尽量还是不要用like语句了。如果想做模糊搜索,建议用搜索引擎,比如solr,这样会比like强大n倍。
现在来分析一下为什么like语句查询的效率会很低,测试数据共4000000条,如下图:
第一步:不使用索引
下图可以看出,不使用索引的时候普通查询与like查询的耗时相当,like略长,这也是必然的,因为它要进行额外的算法。
第二步:使用索引
如下图,使用索引后,普通查询的耗时基本算是秒查,非常快;而like查询还是耗时一秒多。
第三步:分析原因
如下图,用explain分析一下,此时我们立刻明白了,普通查询用到了索引,但是like语句没有用到索引。
所以,照成mysql中like查询效率低下的原因是:在有些情况下,like查询使用不到索引,会扫描全表。
最后,补充一下,like语句有时候也是可以用到索引的,如下图,如果我们查询的时候写成“like 'dd_'或者like 'dd%'”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是比普通查询耗时要多很多。
因此,当表的数据量比较大的时候,尽量还是不要用like语句了。如果想做模糊搜索,建议用搜索引擎,比如solr,这样会比like强大n倍。
相关文章推荐
- Mysql模糊查询like效率,以及更高效的写法
- Mysql模糊查询like效率,以及更高效的写法 在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时
- Mysql模糊查询like效率,以及更高效的写法
- Mysql模糊查询like效率,以及更高效的写法
- MySql模糊查询like通配符使用详细介绍
- MySQL 使用explain分析sql语句的查询效率(二)
- Mybatis中oracle、mysql、db2、sql server的like模糊查询
- MySQL利用profile分析慢sql详解(group left join效率高于子查询)
- Oracle数据库,忽略大小写Like模糊查询(SQL Server,MySql原理相同)
- mysql 千万级数据查询效率实践,分析 mysql查询优化实践--本文只做了一部分,仅供参考
- MYSQl left join 联合查询效率分析
- MySql模糊查询like通配符使用详细介绍
- Mysql 多表联合查询效率分析及优化
- Mysql中使用like进行模糊查询反斜线等符号转义处理
- MySQL随机查询记录的效率测试分析
- MySql模糊查询like通配符使用详细介绍
- MySql like模糊查询通配符使用详细介绍
- MySql模糊查询like通配符使用详细介绍
- Oracle模糊查询之(3.2从使用函数和sql语法角度来提高模糊查询效率 二)ORACLE中Like与Instr模糊查询性能大比拼
- Mybatis中oracle、mysql、db2、sql server的like模糊查询