mysql 分组查询最大值优化

今天遇到个问题, mysql 取 表中分组,每项最大一条数据 ,假设表没有索引,数据一百万多

网上的写法 百分之 90 是这样的

SELECT 
  id,max(t1.a),b
FROM
  (SELECT 
    id,a,b
  FROM
    table as t1 
  ORDER BY t1.a DESC 
  LIMIT 100000000) AS t1
GROUP BY b ;

生产环境数据量较大,这样的 sql 执行会爆炸。

研究了两个小时,通过以下 sql 解决,效率快一倍,有 id 查询快十倍, 

SELECT
    DISTICT id,t1.a,t1.b
FROM 
    (
      SELECT id,max(t1.a) AS a FROM t1   GROUP BY t1.b
    ) as t2
LEFT JOIN 
   t1 ON t1.id = t2.id AND t1.a=t2.a 

 

优化前

 

 

优化后

不知道大神们还有没有更好的写法指教下。

 

posted @ 2020-08-20 20:29  天雨沧澜  阅读(654)  评论(1)    收藏  举报