• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL优化之使用连接(join)代替子查询

    使用连接(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子查询和嵌套查询优化实例解析
    下一篇:Mysql主从同步Last_IO_Errno:1236错误解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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