主页 > 知识库 > MySQL优化之使用连接(join)代替子查询

MySQL优化之使用连接(join)代替子查询

热门标签:服务外包 Linux服务器 地方门户网站 呼叫中心市场需求 铁路电话系统 百度竞价排名 AI电销 网站排名优化

使用连接(JOIN)来代替子查询(Sub-Queries)

MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:

DELETE FROM customerinfo 
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 

  使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:

SELECT * FROM customerinfo 
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 

  如果使用连接(JOIN).. 来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下:

SELECT * FROM customerinfo 
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo. 
CustomerID 
WHERE salesinfo.CustomerID IS NULL 

  连接(JOIN).. 之所以更有效率一些,是因为 MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作

总结

本文关于MySQL优化之使用连接(join)代替子查询的内容就到这里,仅供参考。如有不足之处请指出。欢迎大家交流讨论。感谢朋友们对本站的支持。

您可能感兴趣的文章:
  • MySQL里面的子查询实例
  • 解决MySQL中IN子查询会导致无法使用索引问题
  • 详细讲述MySQL中的子查询操作
  • 详解MySQL子查询(嵌套查询)、联结表、组合查询
  • mysql in语句子查询效率慢的优化技巧示例
  • Mysql子查询IN中使用LIMIT应用示例
  • MYSQL子查询和嵌套查询优化实例解析
  • mysql实现多表关联统计(子查询统计)示例
  • MySQL笔记之子查询使用介绍
  • MySQL子查询中order by不生效问题的解决方法

标签:黄山 湖南 兰州 仙桃 崇左 衡水 湘潭 铜川

巨人网络通讯声明:本文标题《MySQL优化之使用连接(join)代替子查询》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266