看板 Database 關於我們 聯絡資訊
※ 引述《george755185 (覺悟者恆幸福)》之銘言: : 這是一個假設的欄位: (設名稱是test) : GroupNo | x | y | Date : --------------------------- : 今天我想依GroupNo分類,將各類下Date最大的x,y資料取出 : 我用的語法是: : SELECT GroupNo, x, y, Date : FROM test : WHERE ( : GroupNo, Date : ) : IN ( : SELECT GroupNo, MAX( Date ) : FROM test : GROUP BY GroupNo : ) : 可以達到我要的效果 : 但是在資料量大(2000筆以上)的時候,速度太慢無法符合需求 ~"~ : 有什麼方法可以改善這個查詢的效率嗎? : 或是在使用 MAX...GROUP BY ....的時候,能不能將這個MAX列的其他欄位一併取出來? 如果你是用 Oracle,可以試試看下列的 SQL 會不會好一點 SELECT * FROM (SELECT GROUPNO, X, Y, ADATE, MAX(ADATE) OVER (PARTITION BY GROUPNO) AS MAX_ADATE FROM TEST ) A WHERE ADATE = MAX_ADATE 不過你說資料筆數大於 2000 筆就會速度太慢這件事讓我覺得你用的應該不會是 Oracle 也許你該考慮ㄧ下加個 index ( GROUPNO, DATE ), 這樣也許會有幫助 p.s 版規不是寫了說要說明是哪家的資料庫嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.106.148
george755185:抱歉忘了加上訊息... 我用的是MySQL 09/13 02:44