`

Mysql join语句的优化

 
阅读更多
Mysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的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/ORDER BY)语句的查询过程及优化方法

    在MySQL查询语句过程和EXPLAIN语句基本概念及其优化中介绍了EXPLAIN语句,并举了一个慢查询例子: 可以看到上述的查询需要检查1万多记录,并且使用了临时表和filesort排序,这样的查询在用户数快速增长后将成为噩梦...

    MySQL中join语句的基本使用教程及其字段对性能的影响

    join语句的基本使用 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据。 JOIN 通常与 ON 关键字搭配使用,基本语法如下: … FROM table1 INNER|LEFT|RIGHT JOIN table2 ON ...

    mysql查询优化的若干

    mysql_查询语句优化.MySQL怎样优化LEFT JOIN 在MySQL中,A LEFT JOIN B实现如下: 1、表B被设置为依赖于表A。 2、表A被设置为依赖于所有用在LEFT JOIN条件的表(除B外)。 3、所有LEFT JOIN条件被移到WHERE子句中...

    在MySQL中使用JOIN语句进行连接操作的详细教程

    在MySQL中联接(join)行为是指两个或多个表到一个表中可以使用连接在SELECT,UPDATE和DELETE语句中加入MySQL表。我们将看到一个例子LEFT JOIN简单的MySQL连接。 在命令提示符使用联接: 假设我们两个表的教程tcount_...

    mysql join

    mysql join实例,包括建表语句,join查询

    Mysql中Join的使用实例详解

    本章节我们将向大家介绍如何使用MySQL 的 JOIN 在两个或多个表中查询数据。对mysql中的join感兴趣的朋友一起学习吧

    mysql 开发技巧之JOIN 更新和数据查重/去重

    这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join 的数据选取范围 [][1] [1]: ...

    MySQL中union和join语句使用区别的辨析教程

    主要介绍了MySQL中union和join语句的用法区别,举例说明了union和join在连接操作上的不同作用,需要的朋友可以参考下

    50道MySQL经典练习题

    SQL语句可能会因数据库系统的不同会有少许差异。 这里放上MySQL语法执行的先后顺序: 7:SELECT 查询列表 1:FROM 表 2:连接类型 JOIN 表2 3:ON 连接条件 4:WHERE 筛选条件 5:GROUP BY 分组 6...

    MySQL是如何基于各种规则去优化执行计划的

    子查询优化:MySQL会尝试优化子查询,例如通过半连接(semi-join)来减少不必要的数据处理3。 JOIN优化:MySQL会选择最有效的方式来执行表之间的连接操作。 缓存利用:在某些情况下,MySQL会利用查询缓存来加速重复...

    Mysql中基本语句优化的十个原则小结

    mysql基本语句优化原则 一、尽量避免在列上运算,这样会导致索引失效 select * from t where YEAR(d) >= 2011; 优化为 select * from t where d >='2011-0101' 二、使用 JOIN 时,应该用小结果集驱动大结果集,...

    MySQL调优及mysql性能优化.doc

    Mysql性能优化就是通过合理安排资源,调整系统参数使MySql运行更快、更节省资源。 不难发现,原来mysql调优其实就是从时间、空间这两个方面来进行优化 mysql怎么调优 第一:选择最合适的字段属性。 mysql在创建...

    简单了解mysql语句书写和执行顺序

    mysql语句的书写顺序和执行顺序有很大差异。 书写顺序,mysql的一般书写顺写为: select <要返回的数据列> from <表名> <join> join <join> on <join> where group by <分组条件> having <分组后的...

    MySql 5.1 参考手册.chm

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. ...

    MySQL知识总结之sql语句

    MySQL的一些基础知识总结。包含mysql编程,mysql操作语言,mysql查询语言,mysql定义语言(数据类型),mysql控制语言(数据库用户管理)和mysql事务语言。

    mysql高级视频教程百度云(2019).txt

    16.MySQL高级_索引分类和建索引命令语句.avi 15.MySQL高级_索引优势劣势.avi 14.MySQL高级_索引是什么.avi 13.MySQL高级_七种JOIN的SQL编写.avi 12.MySQL高级_七种JOIN理论.avi 11.MySQL高级_SQL执行加载...

Global site tag (gtag.js) - Google Analytics