2014-10-16 63 views
0

我有以下查詢,它是從在線發現的提示開發的,因爲GROUP BY返回最大值的問題;但運行速度非常緩慢。替代mysql mysql WHERE IN SELECT GROUP BY當想要在組中的最大值

說完看了網上我看到那WHERE IN (SELECT.... GROUP BY)可能是問題,但說實話,我在努力尋找解決的辦法:

SELECT * 
FROM tbl_berths a 
JOIN tbl_active_trains b on a.train_uid=b.train_uid 
WHERE (a.train_id, a.TimeStamp) in (
    SELECT a.train_id, max(a.TimeStamp) 
    FROM a 
    GROUP BY a.train_id 
) 

我想我可能需要一個派生表,但我在這個領域的經驗是零,它只是不工作!

回答

1

你可以移動到一個子查詢,還可以選擇,而不是所有(*)只需要列

SELECT a.train_uid 
FROM tbl_berths a 
JOIN tbl_active_trains b on a.train_uid=b.train_uid 
JOIN (SELECT a.train_id, max(a.TimeStamp) as TimeStamp 
    FROM a 
    GROUP BY a.train_id)T 
on a.train_id = T.train_id 
and a.TimeStamp = T.TimeStamp 
+0

謝謝,這周圍6-8倍的速度執行時間使它 – 2014-10-16 16:48:00