Вопрос проверяет глубокое понимание работы БД, индексов и влияния запросов на производительность.
Начинают с анализа медленных запросов и EXPLAIN. Добавляют или корректируют индексы. Уменьшают объём данных и количество запросов. В сложных случаях применяют кеширование и денормализацию.
Высокий CPU на БД почти всегда означает, что база делает слишком много работы.
какие запросы выполняются чаще всего
какие выполняются дольше всего
EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 10;
Смотрят:
Seq Scan вместо Index Scan
большое количество строк
Индексы — главный инструмент оптимизации.
условия WHERE
JOIN
ORDER BY
индекс есть, но не используется
неправильный порядок колонок в составном индексе
выбирать только нужные поля
избегать SELECT *
убирать лишние JOIN
проверять подзапросы
кеширование результатов
реплики для чтения
агрегация заранее
денормализация
партиционирование
вынос тяжёлых запросов в аналитику
Оптимизация БД начинается с анализа запросов и индексов. Без понимания плана выполнения любые изменения — это стрельба вслепую.