Dotaz, jako je tento (načítání všech nebo většiny řádků), je rychlejší pokud GROUP
než se JOIN
. Takhle:
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;
Tímto způsobem potřebujete mnohem méně operací spojení. A řádky tabulky cars
nemusejí být nejprve vynásobeny připojením k mnoha uživatelům a poté seskupeny zpět, aby byly opět jedinečné.
Musí být seskupena pouze správná tabulka, což také zjednodušuje logiku.