← Все навыки

SQL

Научитесь писать эффективные запросы, понимать планы выполнения и уверенно отвечать на вопросы по SQL на собеседованиях

Запросы и оптимизация Индексы и транзакции Индивидуально с ментором

Для кого этот курс

  • Разработчики, которые пишут запросы на автомате и хотят понять, как они работают под капотом
  • Бэкенд-разработчики, готовящиеся к секции SQL на собеседовании
  • Все, кто хочет научиться оптимизировать медленные запросы и правильно проектировать схемы

Что вы получите

Уверенные запросы JOIN, подзапросы, CTE, оконные функции — без гугла и шпаргалок
Оптимизация Чтение EXPLAIN, выбор индексов, устранение узких мест
Проектирование Нормализация, денормализация, выбор типов данных и ограничений
Готовность к интервью Типичные задачи на SQL с собеседований и разбор решений

Программа курса

Основы SQL

SELECT, WHERE, ORDER BY, GROUP BY, HAVING — фундамент
  • Порядок выполнения SQL-запроса: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
  • Агрегатные функции: COUNT, SUM, AVG, MIN, MAX
  • Фильтрация: IN, BETWEEN, LIKE, IS NULL

JOIN и подзапросы

INNER, LEFT, RIGHT, FULL, CROSS JOIN, коррелированные подзапросы
  • Типы JOIN: когда какой использовать и как они работают
  • Подзапросы в SELECT, FROM, WHERE — когда оправданы, когда нет
  • Коррелированные подзапросы и EXISTS vs IN

Оконные функции

ROW_NUMBER, RANK, LAG, LEAD, SUM OVER — мощный инструмент аналитики
  • OVER(PARTITION BY ... ORDER BY ...) — синтаксис и логика окон
  • Ранжирование: ROW_NUMBER, RANK, DENSE_RANK, NTILE
  • Смещение: LAG, LEAD, FIRST_VALUE, LAST_VALUE
  • Агрегация в окнах: SUM, AVG, COUNT с ROWS/RANGE

CTE и рекурсия

WITH, рекурсивные CTE — читаемые и мощные запросы
  • Common Table Expressions для структурирования сложных запросов
  • Рекурсивные CTE: обход деревьев и графов в SQL
  • CTE vs подзапросы vs временные таблицы — что выбрать

Индексы

B-tree, Hash, GIN, GiST — когда помогают, когда мешают
  • Как устроен B-tree индекс и почему он подходит для большинства случаев
  • Составные индексы: порядок колонок и covering indexes
  • Когда индекс не используется: функции, приведение типов, OR

EXPLAIN и оптимизация

Чтение планов выполнения, поиск и устранение узких мест
  • EXPLAIN ANALYZE: как читать вывод и на что обращать внимание
  • Seq Scan vs Index Scan vs Bitmap Scan — что означают и когда переключаются
  • Типичные проблемы: N+1, неиспользуемые индексы, лишние сортировки

Транзакции

ACID, уровни изоляции, deadlocks, MVCC
  • ACID: Atomicity, Consistency, Isolation, Durability
  • Уровни изоляции: Read Uncommitted → Serializable и аномалии каждого
  • MVCC в PostgreSQL: как работают снапшоты и видимость строк
  • Deadlocks: как возникают, как обнаруживать и предотвращать

Проектирование схемы

Нормализация, денормализация, типы данных, ограничения
  • Нормальные формы: 1NF → 3NF → BCNF — когда достаточно
  • Денормализация: когда оправдана и как не потерять консистентность
  • Выбор типов данных, CHECK, UNIQUE, FK — практические рекомендации

Практика: 4 блока заданий + задачи на оптимизацию

Готовая схема (users, products, orders) — пишете запросы, проверяете результат

  • Основы: DDL, SELECT, NULL, фильтрация — работа с реальной схемой
  • Агрегации, JOIN, подзапросы, CTE — построение сложных выборок
  • Оконные функции, DML, индексы, EXPLAIN — оптимизация запросов
  • Транзакции, паттерны, мониторинг — production-навыки
  • Задачи на оптимизацию медленных запросов с разбором EXPLAIN
  • Вопросы для собеседований: Middle и Senior уровень