您的位置:首页 > 运维架构

8.2.1.17 DISTINCT Optimization

2015-10-23 10:42 246 查看
8.2.1.17 DISTINCT Optimization

DISTINCT 结合ORDER BY 需要一个临时表在很多情况下:

因为DISTINCT 可能使用GROUP BY, 了解MySQL 和列在ORDER BY 或者HAVING 子句

不是SELECT 的列

在大多数情况下,一个DISTINCT 子句可以被认为一个特定GROUP BY 的例子,比如,下面两个查询是等价:

SELECT DISTINCT c1, c2, c3 FROM t1

WHERE c1 > const;

SELECT c1, c2, c3 FROM t1

WHERE c1 > const GROUP BY c1, c2, c3;

由于这种等价, 优化应用于GROUP BY 查询可以应用于DISTINCT 查询。

当结合LIMIT row_count 和DISTINCT, MySQL 停止当找到row_count 唯一的行就停止

ruguo9你不使用 从查询的所有表的列, MySQL 停止扫描任何不使用的表 只要它找到第一个匹配。

在下面的例子,架设 t1是在t2前使用( 你可以通过EXPLAIN检查)

MySQL 停止从t2读取

SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: