Хотя другие запросы могут помочь с помощью группы select max(), вам может быть лучше пойти по другому маршруту. Похоже, вы отслеживаете транспортные средства, перемещающие товары какого-либо типа и требующие последнего места в любой точке.
Возможно, вам будет лучше обновить таблицу «Трекеры» и добавить столбец для LastGPSDate. Затем с помощью триггера при вставке в таблицу Date_GPS выпустите обновление для соответствующего Trackers.LastGPSDate, где COD = gps.sn, из которого вы вставляете (на основе вашего условия соединения). Тогда ваш запрос будет упрощен до
SELECT
r.id,
c.name,
CONCAT(v.title, '', v.plaque) AS title,v.type_vehicle,
r.sn,
r.lat,
r.lng,
r.direction,
r.date_db,
r.date_gps,
r.volt_main,
r.speed,
r.ing,
t.sat_fix,
r.sat
FROM
clients c
JOIN vehicles v
ON c.id = v.clients_id
JOIN installations i
ON v.id = i.vehicles_id
join trackers t
ON i.trackers_id = t.id
JOIN registers r
ON t.cod = r.sn
AND t.LastGPSDate = r.date_gps
WHERE
c.management_id = p_management
ORDER BY
t.LastGPSDate DESC;
я отменил заказ таблиц, чтобы лучше соответствовать тому, что вы ищете. Начните с одного клиента с конкретным, где с помощью идентификатора управления. Затем, только их транспортные средства к установкам, трекеры и, наконец, регистрируются.
Я бы тогда предложить следующие показатели индексов таблицы клиентов (management_id, ID) транспортных средств (ID, clients_id) установки (trackers_id, vehicles_id) трекеры (LastGPSDate, треска, идентификатор, sat_fix) регистры (SN , date_gps)
Из-за условия соединения, конкретно ограничивающего один идентификатор управления, я поместил его в первую позицию индекса.
Таким образом, из двух или более миллионов записей, BULK ваших данных может состоять из 20, 30, 100 различных идентификаторов управления, зачем генерировать MAX, применяемый к всем регистрам каждый раз при его запуске. Штампом даты/времени каждый раз с помощью триггера вы получаете свои данные быстрее и только для тех клиентов, которых вы хотите в этот момент.
Вы проверили план объяснения? – Incognito
Пожалуйста, добавьте в план выполнения запроса вопрос. – eis