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

作者:城市里的最后一个农民 时间:2024-01-25 18:26:33 

使用连接(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)代替子查询的内容就到这里,仅供参考。如有不足之处请指出。欢迎大家交流讨论。感谢朋友们对本站的支持。

来源:http://blog.csdn.net/hongsejiaozhu/article/details/1876181

标签:mysql,优化
0
投稿

猜你喜欢

  • MySQL内连接和外连接及七种SQL JOINS的实现

    2024-01-21 09:23:16
  • Pytorch 实现变量类型转换

    2021-09-27 23:35:47
  • python MySQLdb Windows下安装教程及问题解决方法

    2024-01-26 11:57:49
  • python3 kubernetes api的使用示例

    2021-11-11 00:56:18
  • 解决使用export_graphviz可视化树报错的问题

    2022-06-10 18:35:59
  • Python实现switch/case语句

    2021-03-30 00:46:28
  • Python中文件的写入读取以及附加文字方法

    2021-03-03 12:05:15
  • Python 中 Meta Classes详解

    2023-06-02 11:52:47
  • 简单的MySQL备份与还原方法分享

    2024-01-24 22:51:13
  • 利用python绘制正态分布曲线

    2021-04-09 06:59:40
  • 使用vue-router切换组件时使组件不销毁问题

    2024-04-30 10:35:17
  • 如何利用Python 快速找到最大文件

    2021-08-06 23:22:47
  • python 装饰器的使用示例

    2021-05-15 00:52:09
  • Sublime开发python程序的示例代码

    2023-11-06 09:45:46
  • Python性能优化技巧

    2021-06-29 12:48:32
  • 如何把python项目部署到linux服务器

    2023-10-02 14:27:22
  • CentOS 6.4下编译安装MySQL5.6.14教程

    2024-01-20 01:06:43
  • explain命令为什么可能会修改MySQL数据

    2024-01-19 14:53:49
  • 学习Python爬虫前必掌握知识点

    2022-10-09 04:32:57
  • golang原生实现JWT的示例代码

    2024-02-08 05:59:51
  • asp之家 网络编程 m.aspxhome.com