首先,這裏的查詢我就說說:預期結果在MySQL中獲取所有或GROUP BY?所有的
SELECT route_id, direction_id
FROM stop_times
LEFT JOIN trips USING (trip_id)
WHERE stop_id= 1002
GROUP BY CONCAT(route_id, direction_id)
例子:
route_id | direction_id
-----------------------------
106 | 0
106 | 1
13 | 0
13 | 1
21 | 0
4 | 0
4 | 1
6 | 0
因此,運行此查詢將採取0.088秒的averge。這沒關係......但是如果我刪除GROUP BY,則需要0.0026秒。
現在我的問題是:
會不會是更好地做GROUP BY和MySQL中處理一切或一切獲取在PHP中的數組處理呢?
感謝
爲什麼你'GROUP BY CONCAT(ROUTE_ID,direction_id )'而不是'GROUP BY route_id,direction_id'?或者簡單地說:'SELECT DISTINCT route_id,direction_id'並刪除'GROUP BY'子句?(當你的預期結果不包含NULL時,我也對'LEFT JOIN'感到困惑,並且我想知道你的連接是否可以更好地轉換爲IN或INISTS下的子查詢;但是如果沒有表格的定義很難說。) – ruakh
@ruakh +1不僅您的修正效率更高,而且會避免產生不正確的結果。想象一下「route_id」和「direction_id」爲'12,1'和'1,21'的行對。使用'CONCAT'時,這些會被錯誤地分組在一起。 –
@ruakh好問題。我沒有答案,但是是的,你是對的......沒有做測試,需要相同的時間。 –