您现在的位置是:群英 > 数据库 > MySQL数据库
MySQL中in和or的效率哪个高,为什么?
Admin发表于 2022-05-16 09:57:072439 次浏览

    最近遇到一个网站卡死的问题,从脚本中发现有个sql执行效率很慢,后来将or改为in,效率提升了几百倍。那么MySQL中in为何比or的效率高呢?原因是什么?接下来我们一起来探讨一下。

场景描述

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中in为何比or的效率高应该都清楚了吧,上述示例有一定的参考价值,感兴趣的朋友可以了解看看,希望对大家学习MySQL数据库的使用有帮助,想要了解更多可以继续浏览群英网络其他相关的文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: mysql中in和or
相关信息推荐
2021-11-08 15:43:40 
摘要:这篇文章给大家分享的是oracle数据库的数据类型,下文简单的介绍oracle的12种数据类型,对新手学习oracle数据库有一定的帮助,感兴趣的朋友接下来一起跟随小编看看吧。
2022-05-09 18:04:51 
摘要:在oracle中,using用于简化连接查询,只有当查询是等值连接和连接中的列必须具有相同的名称与数据类型时,才能使用using关键字进行简化。
2022-06-09 17:53:19 
摘要:sql全称SQL Server,是一种关系型数据库管理系统。SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部