Блог об SQL
Разборы, уроки и советы — от основ до продвинутых техник
13 статей по теме Продвинутый
Динамический SQL в PostgreSQL: EXECUTE и строим запросы программно
Динамический SQL в PostgreSQL: EXECUTE в PL/pgSQL, FORMAT для безопасного построения запросов, защита от SQL-инъекций. Примеры с необязательными фильтрами.
Витрины данных на SQL: от сырых таблиц к готовым отчётам
Построение витрин данных на SQL: денормализация, звёздная схема, медленно меняющиеся измерения (SCD Type 2), MATERIALIZED VIEW для витрин.
А/Б тестирование на SQL: считаем статистическую значимость
А/Б тестирование на SQL: сравнение конверсий, z-тест для пропорций, p-value в PostgreSQL. Как проверить результаты эксперимента без Python.
PIVOT в SQL: превращаем строки в столбцы
PIVOT в SQL: условная агрегация через CASE WHEN, расширение tablefunc и crosstab в PostgreSQL, динамический PIVOT. Примеры отчётов.
Продвинутые транзакции в PostgreSQL: SAVEPOINT и обработка ошибок
Продвинутые транзакции PostgreSQL: SAVEPOINT, ROLLBACK TO SAVEPOINT, вложенные транзакции, обработка deadlock на стороне приложения.
Оконные функции SQL: продвинутые техники и фреймы
Продвинутые оконные функции SQL: ROWS vs RANGE, фреймы PRECEDING/FOLLOWING, скользящие окна, EXCLUDE, FIRST_VALUE/LAST_VALUE. Примеры на PostgreSQL.
Секционирование таблиц в PostgreSQL: PARTITION BY RANGE, LIST, HASH
Секционирование в PostgreSQL: PARTITION BY RANGE, LIST, HASH. Когда нужно секционирование, как создать и управлять секциями, прирост производительности.
Блокировки в PostgreSQL: FOR UPDATE, deadlock и как с ними работать
Блокировки в PostgreSQL: строчные и табличные блокировки, SELECT FOR UPDATE, FOR SHARE, обнаружение и предотвращение deadlock. Практические примеры.
Materialized View в PostgreSQL: кэшируем тяжёлые запросы
Materialized View в PostgreSQL: создание, REFRESH MATERIALIZED VIEW, конкурентное обновление, отличие от обычного VIEW. Когда использовать и как избежать проблем.
JSONB в PostgreSQL: хранение и запросы к полуструктурированным данным
JSONB в PostgreSQL: операторы ->, ->>, @>, GIN-индексы, jsonb_array_elements, обновление полей. Когда использовать JSONB вместо отдельных таблиц.
LATERAL JOIN в PostgreSQL: когда подзапрос становится циклом
LATERAL JOIN в PostgreSQL: синтаксис, применение для топ-N в каждой группе, вызов функций для каждой строки, сравнение с обычным подзапросом.
Миграции базы данных: как менять схему без даунтайма
Zero-downtime миграции PostgreSQL: как добавить колонку, создать индекс CONCURRENTLY, переименовать таблицу без блокировок. Практические паттерны.
SQL: как отличить middle от senior на собеседовании
Практическое руководство для HR: конкретные критерии и вопросы, которые помогут разграничить уровни middle и senior по SQL.