Loading...
墨滴

阿啾

2021/06/29  阅读:44  主题:红绯

MySQL 8.0: DISTINCT Optimization 译文


  在大部分的例子中,DISTINCTORDER BY 需要使用临时表。 因为DISTINCT可能用到GROUP BY,了解MYSQL对于ORDER BYHAVEING中非选项列的处理可参考: Section 12.20.3, “MySQL Handling of GROUP BY”.
  在大多数例子中,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。因此,有关DISTINCT查询优化的信息也可参考Section 8.2.1.17, “GROUP BY Optimization”
  将 LIMIT row_count 与 DISTINCT 结合使用时,MySQL 会在找到 row_count 唯一行后立即停止。
  在下面的例子中,假设t1在t2之前使用(你可以使用explanin来检查),MySQL在找到t2的第一行时停止从t2读取(对于t1中的任何特定行)。

SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;


MySQL 8.0



阿啾

2021/06/29  阅读:44  主题:红绯

作者介绍

阿啾