Во-первых, ваше предложение ON не завершено.Обычно это будет ON X=Y
, у вас есть ON X
.Это важно, потому что вы говорите базе данных, как связать две таблицы.Я предполагаю, что именно здесь теряется наибольшее время.
Во-вторых, ЛЕВОЕ СОЕДИНЕНИЕ, как здесь используется, бесполезно (если только вы не хотите бронировать, у которых нет пользователей.) Попробуйте ВНУТРЕННЕЕ СОЕДИНЕНИЕ.
В-третьих, как правило, лучше сделать SmallTable INNER JOIN BigTable
(не всегда ваш пробег может отличаться.)
В-четвертых, как уже упоминалось, использовать псевдоним для предложения ORDER BY.
Попробуйте:
select first_name, last_name, count(*) as cnt
from users
inner join bookings on bookings.user_id = user.id
group by user_id
order by cnt;