怎样提高mysql中or和in的效率
怎样提高mysql中or和in的效率,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
前言今天遇到了一个网站卡死的问题,过了几分钟就好了,找到了一个定时脚本中有个sql,执行效率很慢,DBA建议将or改为in,效率提升了几百倍
场景描述1.两个表关联查询
2.table1 的数据量接近100万
3.table2 的数据量接近900万
4.查询条件中的title字段没有加索引
5.原始查询语句
SELECTa.idasidFROM`table1`asaleftjointable2asbona.id=b.idWHEREb.title="衣服"orb.title="裤子"orb.title="帽子"limit0,100
6.改造后的查询语句
SELECTa.idasidFROM`table1`asaleftjointable2asbona.id=b.idWHEREb.titleIN("衣服","裤子","帽子")limit0,100改造后的效率
原sql的执行时间为5s,更改之后只需要0.01s
原因查了一下资料,在数据量过百万,并且条件没有加索引,or的查询效率远远低于in,or的效率为O(n),而in的效率为O(logn), 当n越大的时候效率相差越明显。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。