Een zoekopdracht zoals deze (alle of de meeste rijen ophalen) is sneller als je GROUP
voordat je JOIN
. Zoals dit:
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;
Zo heb je veel minder join-operaties nodig. En de rijen van de tabel cars
hoeven niet eerst te worden vermenigvuldigd door zich bij meerdere gebruikers aan te sluiten en vervolgens weer te groeperen om weer uniek te zijn.
Alleen de juiste tabel hoeft te worden gegroepeerd, wat de logica ook eenvoudiger maakt.