では、私はLaravelプロジェクト関連するmysqlサブクエリを最適化するにはどうすればよいですか? laravel
1)車(ID、トークン、名前)
2)トラッキング(ID、car_id、緯度、LNG、point_time)
追跡テーブル内の2つのテーブルを持っています車のすべてのGSPデータを含み、巨大なデータを含んでいます!
各車の最後のトラッキングデータを取得する必要があります。
SELECT distinct `a`.`id` ,
(SELECT MAX(`tracking`.`point_time`)
FROM `tracking`
WHERE tracking.car_id = a.id) as `last_time`
FROM `cars` AS `a`
今のところ、このクエリは正常に動作しますが、実行には約4秒かかります。
より速く実行するには、置換クエリが必要です。
私は上記のように高速に実行するために、生のSQLクエリを実行することをお勧めします。私はMAX
とGROUP BY
だけでも、あなたがlast_timeにindex
を追加する必要があり、order by
を使用して、偉大な、これを試すことはないと思います
select c.id,
t.`last_time`
from `cars` c
left outer join (
select car_id,
MAX(t.`point_time`) `last_time`
from `tracking` t
group by car_id
) t on c.id = t.car_id;
なぜJOINを試してみませんか。 –