1

이것은 내 쿼리이므로 실행하는 데 오랜 시간이 걸립니다. 내부 조인을 사용할 수 있습니까? 나는 하나의 테이블에서만 작업하고 있습니다.Subselect bad performance

EXISTS() : 당신은이 작업을 수행 JOIN 또는 NOT EXISTS()을 사용할 수 있습니다

SELECT imei,csv_data_table.time,phone_model,test_unique_id 
FROM verveba_mos.csv_data_table 
WHERE time = (SELECT MAX(time) FROM csv_data_table 
       T1 WHERE csv_data_table.imei=T1.imei) 
+0

원하는 것을 더 설명 할 수 있습니까? @ p.g – zahed

+0

'time' 및/또는'T1.imei'에 대한 색인이 있습니까? – Trinimon

+0

[_Groupwise max_] (http://mysql.rjweb.org/doc.php/groupwise_max). –

답변

0

, 즉 반드시 빠른 것을 의미하지 않습니다

SELECT imei,csv_data_table.time,phone_model,test_unique_id 
FROM verveba_mos.csv_data_table t 
WHERE NOT EXISTS(SELECT 1 
       FROM csv_data_table s 
       WHERE t.imei= s.imei 
        AND s.time > t.time) 

JOIN :

SELECT t.imei,t.time,t.phone_model,t.test_unique_id 
FROM verveba_mos.csv_data_table t 
JOIN(SELECT s.imei,MAX(time) as max_t 
    FROM csv_data_table s 
    GROUP BY s.imei) p 
ON(t.imei= p.imei and t.time = p.max_t) 
+0

이 quey dat u가 답변으로 표시되면 오류가 표시됩니다. –

+0

예, 오타가 열의 철자가 잘못되었습니다. @ p.g. – sagi

+0

내부 조인을 사용하고 실행 시간을 줄이려면 가능한 일입니다. 어떻게 보여 주시겠습니까? 결과는 여전히 쿼리와 동일해야합니다 orginally –

0
SELECT t1.imei, t1.time, t1.phone_model, t1.test_unique_id 
FROM csv_data_table t1 
JOIN (select imei, max(time) time from csv_data_table group by imei) t2 
    ON (t1.imei = t2.imei and t1.time = t2.time) 

아직 색인이없는 경우 csv_data_table(imei, time)에 색인을 추가하는 것을 고려해야합니다.