Eine Abfrage wie diese (alle oder die meisten Zeilen abrufen) ist schneller wenn Sie GROUP
bevor Sie JOIN
werden . So:
SELECT id, name, created_at, updated_at, u.ct
FROM cars c
LEFT JOIN (
SELECT car_id, count(*) AS ct
FROM users
GROUP BY 1
) u ON u.car_id = c.id
ORDER BY u.ct DESC;
Auf diese Weise benötigen Sie viel weniger Join-Operationen. Und die Zeilen der Tabelle cars
müssen nicht erst multipliziert werden, indem sie zu vielen Benutzern hinzugefügt und dann wieder gruppiert werden, um wieder eindeutig zu sein.
Nur die rechte Tabelle muss gruppiert werden, was auch die Logik vereinfacht.