@LordOfARing

Как можно оптимизировать запрос?

Как можно оптимизировать запрос?
with first_table as (
select user_id, room_id,
max(end_date) over (partition by room_id order by end_date desc) as end_date_room
from reservations re
),
second_table as (
select distinct roomid, enddate
from first_table
inner join
(select room_id as roomid, end_date_room as enddate
from first_table) t2
on t2.enddate=first_table.end_date_room
)

select roomid as room_id, name, enddate as end_date 
from second_table
inner join
(select name, re.room_id, end_date
from users u
inner join Reservations re
on re.user_id=u.id
) t3
on t3.end_date=second_table.enddate

Это корректное решение задачи https: // sql-academy .org/ru/trainer/tasks/68 Синтаксис MySQL 8 версии
Как можно переписать код, чтобы его оптимизировать? Возможно стоит рекурсию сделать, но как?
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
SELECT
    t.room_id as room_id,
    Users.name,
    Reservations.end_date
from
    (select room_id, MAX(end_date) as end_date from Reservations group by room_id) as t
join Reservations on t.room_id = Reservations.room_id and t.end_date = Reservations.end_date
join Users on Users.id = Reservations.user_id ;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы