まず、ここで私がお話しますクエリです:期待される結果の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 route_id、direction_id'ではなく?または単に 'SELECT DISTINCT route_id、direction_id'を実行し、' GROUP BY'節を削除しますか?(私はちょうど 'LEFT JOIN'によって少し混乱しています。あなたの予想される結果に' NULL'sが含まれていないとき、あなたの結合が 'IN'または' EXISTS'の下位のサブクエリにうまく変換されるかどうか疑問です。テーブルの定義はわかりにくいです。) – ruakh
@ruakh +1訂正だけでなく、不正確な結果の生成を避けることができます。 'route_id'と' direction_id'が '12,1'と' 1,21'の行のペアを想像してください。これらは、 'CONCAT'を使用するときに誤ってグループ化されます。 –
@ruakh良い質問。私は答えがありませんが、はい、あなたは正しいです...テストをしなかったし、それは同じ時間量がかかります。 –