Оптимизация и индексы
ProНаучитесь читать план выполнения EXPLAIN ANALYZE и понимать, почему PostgreSQL выбирает Seq Scan вместо Index Scan. Освоите все типы индексов: B-tree, Hash, GIN, BRIN, partial и covering (INCLUDE). Узнаете антипаттерны, которые «ломают» индекс: функция на колонке, implicit cast, NOT IN с NULL. Поймёте, как работают VACUUM и ANALYZE, и как следить за состоянием базы через pg_stat_user_tables и pg_stat_user_indexes. 52 практических урока на датасете e-commerce.
Что вы научитесь
- Читать и интерпретировать вывод EXPLAIN ANALYZE
- Понимать разницу между Seq Scan, Index Scan и Bitmap Scan
- Создавать B-tree, covering и составные индексы
- Знать, когда использовать Hash, GIN, BRIN и partial индексы
- Применять правило левого префикса для составных индексов
- Избегать антипаттернов, которые отключают индекс
- Использовать keyset-пагинацию вместо OFFSET
- Диагностировать состояние таблиц через pg_stat_user_tables
- Находить неиспользуемые индексы через pg_stat_user_indexes
- Понимать, зачем нужны VACUUM и ANALYZE
Программа курса · 4 трека
EXPLAIN и план выполнения запроса
EXPLAIN показывает, как PostgreSQL решает выполнить запрос. Seq Scan, Index Scan, Hash Join — понять план значит понять узкие места. Научитесь читать стоимость, строки и буферы.
Ещё не начат
Индексы в PostgreSQL
B-tree — универсальный индекс для равенства и диапазонов. Составные индексы и порядок колонок. Hash — только для равенства. GIN — для массивов и JSONB. Частичные индексы — индексируем только нужные строки.
Ещё не начат
Оптимизация запросов
Антипаттерны, которые заставляют PostgreSQL игнорировать индексы. Функции в WHERE, implicit cast, OR вместо IN. Оптимизация JOIN, пагинации и N+1 запросов.
Ещё не начат
Обслуживание базы и итоговый проект
VACUUM и ANALYZE: почему таблицы раздуваются и как PostgreSQL актуализирует статистику. Представления pg_stat_user_tables и pg_stat_user_indexes. Итоговый проект — полный цикл оптимизации e-commerce запросов.
Ещё не начат
Получите полный доступ к курсу
Все уроки, практические задания и проверка запросов — навсегда.