1. 程式人生 > >mysql 分組查詢最大值優化

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 

 

優化前

 

 

優化後

不知道大神們還有沒有更好的寫法指教下。

&n