En fråga som denna (hämtar alla eller de flesta rader) är snabbare om du GROUP
innan du JOIN
. Så här:
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;
På så sätt behöver du mycket färre anslutningsoperationer. Och raderna i tabellen cars
behöver inte först multipliceras genom att ansluta till många användare var och en och sedan grupperas tillbaka för att vara unik igen.
Endast rätt tabell måste grupperas, vilket gör logiken enklare också.