2017-07-18 3 views
2

は私がuser_idを持つグループ化すると、関連する分野で最高の時間を取得し、このどのようにこのSELECTクエリを高速化できますか?

enter image description here

ようuser_idは、時間、inHourとoutHourを含むテーブルを持っています。下の写真では、私が結果として望むものを見ることができます。

enter image description here

私のクエリがうまく動作します。しかし、私は大規模なデータのために遅く動作するので、速度を向上させたい。ここに私のクエリです:

SELECT 
    foo.user_id, 
    foo.time, 
    foo.inHour, 
    foo.outHour 
FROM 
(
    SELECT 
     MAX(time) AS time, 
     user_id 
    FROM 
     foo 
    GROUP BY user_id 
) AS t1 
INNER JOIN foo ON (t1.user_id = foo.user_id AND t1.time = foo.time); 

私は大幅にクエリ時間を短縮する必要があります。どんな助けでも大歓迎です。

+0

http://mysql.rjweb.org/doc.php/groupwise_maxはどのようにあなたのテーブルがインデックス化されている:あなたの既存のクエリは、私のブログがさらに高速技術を提供する

INDEX(user, time) -- in this order! 

の恩恵を受けるだろうか? –

+0

両方のテーブルでuser_id/timeのインデックスを作成しましたか? – Roy

+0

テーブルが1つしかありません@ Rooy –

答えて

0

Groupwise-max?

複合インデックスが必要です。

関連する問題