Пересказ статьи Koen Verbeeck. SQL Server JSON Functions JSON_OBJECTAGG and JSON_ARRAYAGG
Мне необходимо построить JSON из данных, находящихся в базе данных, но оказалось, что существующая конструкция FOR JSON PATH ограничена, когда данные не находятся в одной единственной строке, а разбросаны по множеству строк. Есть ли другой метод обработки данных JSON в SQL Server? Узнайте, как использовать новые функции JSON в SQL Server - JSON_OBJECTAGG и JSON_ARRAYAGG.
Были введены две новые функции T-SQL для создания документов JSON из имеющихся данных: JSON_OBJECTAGG и JSON_ARRAYAGG. Обе являются агрегатными функциями, которые помогают создать представления JSON из данных, хранящихся в множестве строк.
Здесь мы познакомимся с обоими функциями. На момент написания статьи эти функции доступны только в Azure SQL DB, Azure SQL Managed Instance и Fabric SQL Database. Эти функции должны быть включены в следующие версии SQL Server.
Continue reading "Функции JSON_OBJECTAGG и JSON_ARRAYAGG в SQL Server"
Пересказ статьи Jared Westover. Replace SQL Cursors with Set Based Operations – OUTPUT and MERGE
Курсоры имеют плохую репутацию в SQL Server, и вполне залуженную. Они находят свое применение в таких областях, как выполнение задач по обслуживанию баз данных. Я избегаю их, когда дело касается стандартного кода T-SQL. Проблемы производительности становятся заметными при работе с таблицами сколь-нибудь заметного размера. Если вы имеете за спиной более процедурный язык, бывает трудно думать не в терминах курсора. Но не беспокойтесь, есть надежда.
В этой статье я хочу сделать обзор типичного паттерна, который мы все видели. Он включает использование курсора или цикл WHILE для вставки или обновления данных. Начнем с того, чтобы разобраться, почему разработчик может по умолчанию начинать с курсора. Далее я построю типичный курсор для решения этой задачи. Затем мы разберемся, как можно быстрей достичь того же вывода с помощью операции на основе множеств.
Continue reading "Замена курсоров SQL операциями на основе множеств - OUTPUT и MERGE"
Пересказ статьи Cláudio Silva. What happens when we drop a column on a SQL Server table? Where's my space
Короткий ответ: столбец отмечается как "удаленный" и перестанет быть видимым/используемым. Но, что наиболее важно - размер записи/таблицы останется неизменным.
Операция с метаданными
Удаление столбца является логической операцией с метаданными, а не физической. Это означает, что данные не удаляются/перезаписываются при этом действии. Если говорить об удалении данных (записей), то как упоминает
здесь Пол Рэндал:
«стоимость этого будет отложена для вставляющих, а не для удаляющих».
Continue reading "Что происходит при удалении столбца в таблице SQL Server? Где мое пространство?"
Пересказ статьи Hugo Kornelis. Plansplaining part 30 – Static cursors
В части 30 серии
plansplaining мы продолжим обсуждение обработки курсоров. Я рекомендую вам сначала прочитать
предыдущую статью, где я излагаю основы.
Тестовый запрос
В этой серии я буду придерживаться использования одного и того же тестового запроса, который выводит данные по продажам и товарам, которые были проданы в количестве более 10 единиц в пределах заданного диапазона заказов.
Continue reading "Статические курсоры"