专栏首页吴伟祥为什么子查询比连接查询(LEFT JOIN)效率低

为什么子查询比连接查询(LEFT JOIN)效率低

MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。 那么问题来了,什么是子查询?为什么它的效率不高? 子查询:把内层查询结果当作外层查询的比较条件

示例:

select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods); 执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程

优化方式:

可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。

作者:michael_wlq 链接:http://www.jianshu.com/p/cb1e14c0ac39 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Navicat Premium 技巧介绍 + MySQL性能分析

    注:数据库里的数据顺序是按照创建时间存储并排序的,对应List的元素索引从小到大,即索引值越大,这条数据的创建时间越晚,与数据库里的顺序是对应的。 (默认...

    wuweixiang
  • MySQL5.7 四种日志文件 转

    1)show variables like '%verision%'; 显示数据库版本号,存储引擎等信息

    wuweixiang
  • 为什么计算机最小的存储单位是字节?而最小到的传输单位是bit?

    数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b...

    wuweixiang
  • 我的Mysql查询SQL优化总结

    当我们遇到一个慢查询语句时,首先要做的是检查所编写的 SQL 语句是否合理,优化 SQL 语句从而提升查询效率。所以对 SQL 有一个整体的认识是有必要的。

    程序员小明
  • 将SQL优化做到极致 - 子查询优化

    编辑手记:子查询是SQL中比较重要的一种语法,恰当地应用会很大程度上提高SQL的性能,若用的不得当,也可能会带来很多问题。因此子查询也是SQL比较难优化的部分。...

    数据和云
  • 【一文打尽】SQL 数据分析常用语句.....收藏

    • 1 基础查询 • 2 字符串\数字\日期时间 • 3 聚合数据查询 • 4 子查询 • 5 联接\组合查询 • 6 高级查询 • 7 更新数据 阅读提醒:点...

    小莹莹
  • kibana使用

    能不用空格表示OR或者AND就不用空格表示,因为要么全用要么全部不用,否则会因为解析搜索同级的时候,若出现空格和OR,会冲突覆盖意义,虽不会报错,但是,得不到自...

    ydymz
  • Access查询设计界面

    大家好,上节介绍了Access查询的知识框架,其实Access数据库的查询的功能很类似于Excel表中的筛选功能,但是功能更为丰富和强大。

    无言之月
  • Access查询基础

    大家好,前面介绍了Access数据库表部分的内容,后面开始介绍Access数据库查询部分的内容。

    无言之月
  • 2018-06-04第11章 子查询

    用户1250179

扫码关注云+社区

领取腾讯云代金券