在很多情况下,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;

 


 
                    
            
                

相关文章:

  • 2021-08-04
  • 2022-02-22
  • 2021-09-25
  • 2021-10-22
  • 2021-11-29
  • 2022-12-23
猜你喜欢
  • 2021-09-22
  • 2021-12-23
  • 2021-06-13
  • 2021-05-23
  • 2021-10-01
  • 2021-07-17
  • 2022-03-01
相关资源
相似解决方案