【DISTINCT】优化之MySQL官方文档说明
2016-09-25 12:58
357 查看
文档地址:http://dev.mysql.com/doc/refman/5.6/en/distinct-optimization.html
8.2.1.17 DISTINCT Optimization
很多情况下,DISTINCT结合ORDER BY使用时需要产生(内存)临时表。
因为DISTINCT可能会(结合)用到GROUP BY,请参考MySQL是如何处理那些不是被查询(返回)字段的一部分但是出现在ORDER BY或者HAVING语句里的字段。详见章节12.19.3, “MySQL Handling of GROUP BY”。
绝大多数情况下,DISTINCT子句被看成是特殊的GROUP BY实例。例如,以下两个查询是等效的:
SELECT DISTINCT c1, c2, c3 FROM t1WHERE c1 > const;
SELECT c1, c2, c3 FROM t1WHERE c1 > const GROUP BY c1, c2, c3;
正是由于这种等价性,适用于GROUP BY查询的优化同样适用于带有DISTINCT子句的查询。因此,关于DISTINCT查询优化的更多细节详见章节8.2.1.16, “GROUP BY Optimization”。
当DISTINCT与LIMIT row_count结合使用时,MySQL一旦找到row_count的去重记录就停止查询。
如果你不使用(返回)来自于所有查询指定表的字段,MySQL一旦找到第一次匹配就停止扫描任何不用的表。在下面的事例中,假定 t1 先于 t2 (查询)使用(你可以通过EXPLAIN核对),(对于 t1 中的任何特定记录)只要从 t2 中查询到第一条记录,MySQL就停止从它里面读取数据。
SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;
文档地址:http://dev.mysql.com/doc/refman/5.6/en/distinct-optimization.html
8.2.1.17 DISTINCT Optimization
很多情况下,DISTINCT结合ORDER BY使用时需要产生(内存)临时表。
因为DISTINCT可能会(结合)用到GROUP BY,请参考MySQL是如何处理那些不是被查询(返回)字段的一部分但是出现在ORDER BY或者HAVING语句里的字段。详见章节12.19.3, “MySQL Handling of GROUP BY”。
绝大多数情况下,DISTINCT子句被看成是特殊的GROUP BY实例。例如,以下两个查询是等效的:
SELECT DISTINCT c1, c2, c3 FROM t1WHERE c1 > const;
SELECT c1, c2, c3 FROM t1WHERE c1 > const GROUP BY c1, c2, c3;
正是由于这种等价性,适用于GROUP BY查询的优化同样适用于带有DISTINCT子句的查询。因此,关于DISTINCT查询优化的更多细节详见章节8.2.1.16, “GROUP BY Optimization”。
当DISTINCT与LIMIT row_count结合使用时,MySQL一旦找到row_count的去重记录就停止查询。
如果你不使用(返回)来自于所有查询指定表的字段,MySQL一旦找到第一次匹配就停止扫描任何不用的表。在下面的事例中,假定 t1 先于 t2 (查询)使用(你可以通过EXPLAIN核对),(对于 t1 中的任何特定记录)只要从 t2 中查询到第一条记录,MySQL就停止从它里面读取数据。
SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;
相关文章推荐
- 【CONCAT】使用之MySQL官方文档说明
- 【TRUNCATE】使用之MySQL官方文档说明
- 【EXPLAIN】“type”字段详解之MySQL官方文档说明
- 【GROUP_CONCAT】使用之MySQL官方文档说明
- Flash 平台应用性能优化官方文档
- [收藏]使用VMWare串口连接Windbg 官方文档说明 Examples: Debugging over a Virtual Serial Port
- Mysql参数配置优化说明
- MySQL官方参考文档学习笔记——第3章
- MySQL C API 官方说明
- MySQL的distinct group by SQL语法用法说明
- Sqlite官方的查询优化文档
- Mysql参数配置优化说明
- Mysql参数配置优化说明
- 一些mysql启动参数的说明和优化方法
- 一些mysql启动参数的说明和优化方法
- mysql processlist 官方说明
- Symbian Signed For Distributing Your Application/zh-hans 概要 说明 官方文档
- Mysql参数配置优化说明 转
- mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)
- MYSQL参数配置优化说明