Назад к задачам
Junior — Senior
4

Повышение скорости запроса в социальной сети

Компании, где спрашивали:

Страна Девелопмент
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Предложите варианты ускорения работы запроса, не меняя бизнес‑логику соц‑платформы, где при большом количестве лайков у публикации растёт время загрузки страницы.

В системе заданы модели для хранения данных:

class Post(Base):
    id: Mapped[int]
    name: Mapped[str]

class Like(Base):
    id: Mapped[int]
    user_id: Mapped[int]

Текущий вариант запроса, который выводит пост вместе с числом лайков, использует подзапрос:

select *, (select count(*) from like where like.post_id = post.i
where post.id = :id

Опишите, какие приёмы (индексация, изменение структуры запроса, кэширование и т.д.) можно применить, чтобы сократить время выполнения, сохранив прежнее поведение приложения.