Kueri seperti ini (mengambil semua atau sebagian besar baris) lebih cepat jika Anda GROUP
sebelum Anda JOIN
. Seperti ini:
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;
Dengan cara ini Anda membutuhkan lebih sedikit operasi gabungan. Dan deretan tabel cars
tidak harus dikalikan dulu dengan menggabungkan ke banyak pengguna masing-masing lalu dikelompokkan kembali menjadi unik lagi.
Hanya tabel kanan yang harus dikelompokkan, yang membuat logikanya juga lebih sederhana.