В EXPLAIN вашего отчёта видно, что выполняется Sort по created_at на очень большом наборе строк. Какое действие чаще всего помогает уменьшить работу сортировки?

AДобавить OFFSET 0 в начало выборки: это подсказка планировщику пропустить внутреннюю сортировку и сразу перейти к чтению страниц.
BУбрать условие WHERE из запроса: без фильтрации планировщик выбирает более эффективный путь и автоматически задействует индекс.
CДобавить/использовать индекс, который соответствует ORDER BY created_at, чтобы вместо Sort план мог читать строки упорядоченно (например, через Index Scan) или сократить набор до сортировки более селективным WHERE.
DЗаменить ORDER BY created_at на GROUP BY created_at: группировка выполняется на уровне хранилища и не требует отдельного шага сортировки в плане.
Правильный ответ. Сортировка ускоряется, если база может получить строки уже в нужном порядке из индекса.

Разбор

Если план вынужден делать Sort по миллионам строк, это часто главный потребитель ресурсов. Индекс по полю из ORDER BY (или составной индекс под фильтр + порядок) позволяет избежать полной сортировки или существенно её удешевить. Альтернативно можно уменьшить вход в сортировку через более точный WHERE.

Проверь себя · 1/3разбор после ответа
На большой таблице events запрос SELECT * FROM events ORDER BY created_at DESC LIMIT 100 неожиданно работает быстро. Какое объяснение наиболее вероятно при наличии индекса по created_at?
Тренировать SQL в Telegram

Ещё вопросы по теме «EXPLAIN и оптимизация»