Mysql join语句的优化
2014-07-11 10:54
260 查看
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不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。
假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:
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语句和in子查询语句,普通查询可能是最好的优化
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- Mysql join语句的优化
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- Mysql中的STRAIGHT_JOIN和force index语句对sql的优化
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
- Mysql join语句的优化
- mysql的join语句的优化方法
- MySQL 通过索引优化含ORDER BY的语句
- MySQL语句优化的原则
- MySQL语句优化的原则
- 通过索引优化含ORDER BY的MySQL语句
- MySQL 通过索引优化含ORDER BY的语句
- 带你深入了解MySQL语句优化的基本原则