Проверяет умение находить узкие места в медленных SQL-запросах и применять инструменты анализа планов выполнения для их оптимизации.
Медленный SQL-запрос — это чаще всего следствие отсутствия индекса, неудачного плана выполнения или избыточной работы с данными. Прежде чем что-то менять, нужно получить факты: как база данных собирается выполнять запрос и сколько времени тратит на каждый шаг.
В PostgreSQL используется EXPLAIN (ANALYZE, BUFFERS), в MySQL — EXPLAIN ANALYZE. План показывает, какие операции выполняются (Seq Scan, Index Scan, Nested Loop, Hash Join), сколько строк обрабатывается и где основная стоимость.
EXPLAIN (ANALYZE, BUFFERS)
SELECT u.name, o.total
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.created_at > now() - interval '30 days'
ORDER BY o.total DESC
LIMIT 10;CREATE INDEX idx_orders_created_user
ON orders (created_at, user_id);
-- После создания индекса повторяем EXPLAIN ANALYZE
-- и сравниваем время выполнения до и после.Важно помнить: индексы ускоряют чтение, но замедляют запись и занимают место. Не стоит добавлять их «на всякий случай» — только под конкретные запросы.
Итог: оптимизация SQL — это цикл «измерить, изменить, измерить снова». Начинайте с плана выполнения, устраняйте самые дорогие операции и проверяйте результат на реальных данных.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию