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
优化前

优化后

不知道大神们还有没有更好的写法指教下。
一个默默无闻的小码农

浙公网安备 33010602011771号