MYSQL DISTINCT Optimization

   在很多情况下,Distinct和order by的组合需要建立一个内存临时表

 因为distinct关键字可能利用group by,所以了解下mysql如何处理group by有帮助。

   distinct通过会被当成一个特殊的group by,e.g.:

SELECT DISTINCT c1, c2, c3 FROM t1
WHERE c1 > const;
SELECT c1, c2, c3 FROM t1
WHERE c1 > const GROUP BY c1, c2, c3;

两条语句是等价的;

    当distinct和limit row_count关键字组合使用时,mysql找出row_count行数据后会立刻停止。

    如果并没有使用到什么的列,mysql在找到第一个匹配后会停止scan没有使用到的表:

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

原文地址:https://www.cnblogs.com/onlysun/p/4539880.html