您好,欢迎访问一九零五行业门户网

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

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的效率的详细内容。
其它类似信息

推荐信息