鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 数据库 > mysql > >

结合实例分析mysql中or和in的效率

来源:互联网 作者:佚名 时间:2022-06-30 14:17
mysql中or和in的效率 前言 今天遇到了一个网站卡死的问题,过了几分钟就好了,找到了一个定时脚本中有个sql,执行效率很慢,DBA建议将or改为in,效率提升了几百倍 场景描述 1.两个表关

mysql中or和in的效率

前言

今天遇到了一个网站卡死的问题,过了几分钟就好了,找到了一个定时脚本中有个sql,执行效率很慢,DBA建议将or改为in,效率提升了几百倍

场景描述

1.两个表关联查询
2.table1 的数据量接近100万
3.table2 的数据量接近900万
4.查询条件中的title字段没有加索引
5.原始查询语句

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title="衣服" or b.title="裤子" or b.title="帽子" limit 0,100

6.改造后的查询语句

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title IN ("衣服","裤子","帽子") limit 0,100

改造后的效率

原sql的执行时间为5s,更改之后只需要0.01s

原因

查了一下资料,在数据量过百万,并且条件没有加索引,or的查询效率远远低于in,or的效率为O(n),而in的效率为O(logn), 当n越大的时候效率相差越明显。

推荐学习:《mysql视频教程》

以上就是结合实例分析mysql中or和in的效率的详细内容,更多请关注鸿网互联其它相关文章!

【本文来源:韩国服务器 http://www.558idc.com/kt.html欢迎留下您的宝贵建议】
上一篇:总结MySQL常用的字符串函数!
下一篇:没有了
网友评论
<