Найти в Дзене

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы В реальных .NET‑сервисах SQL‑слой нередко становится узким местом: отчёты, валидации, агрегации и JSON‑данные требуют выразительных приёмов, которые короче и быстрее привычных конструкций. Эта статья — практичный обзор возможностей SQL, которые помогают писать чище и быстрее без самописных костылей. 👉 PIVOT/UNPIVOT для отчётов - Превращают значения в столбцы и обратно: компактные сводные выборки без леса CASE‑выражений, удобно для витрин и аналитических API. - Пример с продажами по месяцам показывает, как сократить код и повысить читаемость сводов. ⚡️ CROSS APPLY/LATERAL как «коррелированный цикл» - Дают доступ подзапросу к строке внешней таблицы: удобно вытащить последнюю покупку на аккаунт или развернуть массив. - Работают как построчный вызов — проверяйте планы выполнения; иногда GROUP BY или предварительные агрегаты будут быстрее. 🟢 Работа с JSON и массивами - LATERAL помогает распаковывать JSON‑ма

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы

В реальных .NET‑сервисах SQL‑слой нередко становится узким местом: отчёты, валидации, агрегации и JSON‑данные требуют выразительных приёмов, которые короче и быстрее привычных конструкций. Эта статья — практичный обзор возможностей SQL, которые помогают писать чище и быстрее без самописных костылей.

👉 PIVOT/UNPIVOT для отчётов

- Превращают значения в столбцы и обратно: компактные сводные выборки без леса CASE‑выражений, удобно для витрин и аналитических API.

- Пример с продажами по месяцам показывает, как сократить код и повысить читаемость сводов.

⚡️ CROSS APPLY/LATERAL как «коррелированный цикл»

- Дают доступ подзапросу к строке внешней таблицы: удобно вытащить последнюю покупку на аккаунт или развернуть массив.

- Работают как построчный вызов — проверяйте планы выполнения; иногда GROUP BY или предварительные агрегаты будут быстрее.

🟢 Работа с JSON и массивами

- LATERAL помогает распаковывать JSON‑массивы и фильтровать элементы прямо в запросе, что упрощает обработку полуструктурированных данных.

- Удобный паттерн для адресов, атрибутов и event‑логов без промежуточных ETL.

📌 Частичные индексы и селективность

- Частичный индекс ускоряет запросы по узким подмножествам данных и уменьшает размер индекса, если условие предиката стабильно.

- Комбинируйте с реальными фильтрами запросов и следите за планом — выигрыш заметен на горячих диапазонах.

🧭 Вывод автора

- Зная эти приёмы, проще поддерживать порядок в данных и сокращать время на отчёты и валидации; достаточно начать с одного паттерна в текущем проекте.

Итог: несколько точечных фич SQL могут серьёзно разгрузить .NET‑бэкенд и упростить код — от сводных отчётов до JSON‑фильтраций. Какие из этих приёмов уже используются в проде и где ещё есть потенциал ускориться?

Ссылка: Habr (OTUS) — https://habr.com/ru/companies/otus/articles/942044/

a State of .NET | Подписаться