Skip to content

3 лучших совета для написания более быстрых представлений SQL

Пересказ статьи Edwin Sanchez. Top 3 Tips You Need to Know to Write Faster SQL Views


Друг или враг? Представления SQL Server были предметом жарких дебатов, когда я только начал использовать SQL Server. Говорилось, что это плохо, поскольку медленно. Но как обстоят дела сейчас?
Продолжить чтение "3 лучших совета для написания более быстрых представлений SQL"

Агрегатные функции

Пересказ статьи Hugo Kornelis. Aggregate Functions


Введение


В настоящее время SQL Server поддерживает три оператора, которые могут вычислять агрегаты: Hash Match, Stream Aggregate и Window Aggregate. Все эти операторы используют один и тот же базовый принцип поддержки внутренних счетчиков по мере обработки строк, так что финальное значение этих внутренних счетчиков и является ожидаемым значением.
Продолжить чтение "Агрегатные функции"

Некоторые преобразования агрегата ANY нарушаются

Пересказ статьи Paul White. Some ANY Aggregate Transformations are Broken


Агрегат ANY - это не то, что мы можем непосредственно написать на Transact SQL. Это только внутренняя функция, используемая оптимизатором запросов и движком.

Я сам очень люблю агрегат ANY, поэтому был несколько огорчен, узнав, что он нарушается довольно фундаментальным образом. Говоря «нарушается», я имею в виду получение неправильных результатов.

Здесь я рассмотрю два конкретных случая, где обычно присутствует агрегат ANY, для демонстрации проблемы неправильных результатов и предложу при необходимости обходные пути.
Продолжить чтение "Некоторые преобразования агрегата ANY нарушаются"

Недокументированные планы запросов: агрегат ANY

Пересказ статьи Paul White. Undocumented Query Plans: The ANY Aggregate


Как обычно, начнем с тестовой таблицы:

CREATE TABLE #Example
(
pk numeric IDENTITY PRIMARY KEY NONCLUSTERED,
col1 sql_variant NULL,
col2 sql_variant NULL,
thing sql_variant NOT NULL,
);

Продолжить чтение "Недокументированные планы запросов: агрегат ANY"

Последнее слово о хранилище для DATETIME2

Пересказ статьи Randolph West. The final word on storage for DATETIME2


В прошлом месяце один из комментаторов моей статьи на эту тему заметил, что официальная документация SQL Server для DATETIME2 не согласуется с моими утверждениями, и что я недостаточно представляю себе требования к хранилищу.
Продолжить чтение "Последнее слово о хранилище для DATETIME2"
Категории: T-SQL

Вопросы по SQL Server, задаваемые на интервью опытным разработчикам

Пересказ статьи Sergey Gigoyan. SQL Server interview questions for experienced developers


В этой статье приводятся 10 технических вопросов по SQL Server для старших разработчиков SQL Server и даются ответы на них с примерами. Хотя в интернете существуют сотни статей и публикаций в блогах, имеющих отношение к интервью по серверам SQL, я решил поделиться моим подходом к интервьюированию кандидатов на разработчика баз данных старшего уровня (senior).

Стояла задача задать минимальное число вопросов за ограниченное время (час или менее) и, в то же время, выбрать такие вопросы, которые в максимальной степени покроют основные темы разработки баз данных. Таким образом, вместо того, чтобы задавать несколько вопросов по одной теме, я попытался сформулировать вопросы так, чтобы каждый вопрос представлял целиком одну тему. Продолжить чтение "Вопросы по SQL Server, задаваемые на интервью опытным разработчикам"
Категории: T-SQL

Почему табличный хинт XLOCK не работает?

Пересказ статьи DANIEL JANIK. Why is the XLOCK table hint broken?


Поговорим о том, для чего служит XLOCK. XLOCK - это табличный хинт, который может использоваться в запросе, чтобы наложить эксклюзивную блокировку на ресурсы, к которым обращается запрос. Он может быть весьма опасен, поскольку эксклюзивная блокировка на таблицу или раздел может вызвать значительную потерю производительности. Продолжить чтение "Почему табличный хинт XLOCK не работает?"
Категории: T-SQL

Краткое руководство по запуску кода Python в SQL Server

Пересказ статьи Emmitt Albright. A Quick Start to Running Python Code in SQL Server


В SQL Server 2016 была реализована идея выполнения скрипта на языке R изнутри SQL Server. В SQL Server 2017 эта возможность получила название Machine Learning Services (службы машинного обучения) и расширена возможностью выполнять код на языке Python. В этой статье дается краткое руководство по выполнению кода Python изнутри SQL Server и новым методам преобразования данных.
Продолжить чтение "Краткое руководство по запуску кода Python в SQL Server"

Какая разница между PERCENT_RANK и CUME_DIST?

Пересказ статьи Kathi Kellenberger. What’s the Difference Between PERCENT_RANK and CUME_DIST?


Помните стандартные тесты, которые вы сдавали в школе? Они сравнивали ваше выполнение с другими, ранжировали, но не давали фактического процента правильных ответов.

Microsoft реализовал несколько новых оконных функций в SQL Server 2012, в том числе две, которые сравнивают элементы в списке, аналогично результатам стандартных тестов. Этими двумя функциями являются PERCENT_RANK и CUME_DIST. Они подобны функции RANK, но возвращают процент в группе, а не просто ранговый номер.
Продолжить чтение "Какая разница между PERCENT_RANK и CUME_DIST?"
Категории: T-SQL

Понимание моделей восстановления SQL Server

Пересказ статьи Greg Larsen. Understanding SQL Server Recovery Models


Задачей номер 1, которую каждый администратор баз данных должен выполнять идеально, является восстановление базы данных, если она по какой-то причине окажется поврежденной. Модель восстановления (recovery model) базы данных определяет варианты, которые имеются у администратора при восстановлении базы данных. Если администратор не может восстановить базу данных в случае аварии, ему лучше стряхнуть пыль со своего резюме и начать искать новое направление работы. Продолжить чтение "Понимание моделей восстановления SQL Server"
Категории: T-SQL

Должен ли я заменить слияние строк с помощью FOR XML PATH на String_agg?

Пересказ статьи Jeffry Schwartz. Should I Replace My FOR XML PATH String Merges with String_agg?


Если вы ищете в этом, в первую очередь, прирост производительности, то ответ - нет. Однако, если вы используете SQL Server 2017 и разрабатываете новый код, вам следует рассмотреть использование новой функции String_agg, которая появилась в SQL Server 2017, поскольку код с использованием этой функции намного более читабелен, и его легче написать и поддерживать. В этой статье сравнивается производительность двух методов с объяснением разницы в коде. Представленные примеры задействуют списки имен таблиц SQL Server, которые соединяются в предложении динамического SQL, которое может быть использовано в предложениях WHERE или JOIN.


Продолжить чтение "Должен ли я заменить слияние строк с помощью FOR XML PATH на String_agg?"
Категории: T-SQL

Год 2020, так ли еще нужен DBCC CHECKDB?

Пересказ статьи Daniel Janik. It’s 2020, Do I really need to DBCC CHECKDB?


Скажем, вы получаете запрос на восстановление бэкапа базы данных в Azure Managed Instance. Вы выполняете эту задачу, а затем несколькими днями спустя команда, которая просила сделать восстановление, сообщает, что они имеют проблемы с подключением к недавно восстановленному бэкапу.


Продолжить чтение "Год 2020, так ли еще нужен DBCC CHECKDB?"
Категории: T-SQL

Обновление зависимых представлений после изменения DDL

Пересказ статьи Eduardo Pivaral. Refreshing dependent views after a DDL change


Когда вы отвечаете за базы данных с тоннами объектов, небольшие изменения объекта могут затруднить репликацию, если имеется множество объектов, которые зависят от него.

Здесь мы рассмотрим то, как обновлять представления при изменении столбцов. Продолжить чтение "Обновление зависимых представлений после изменения DDL"
Категории: T-SQL

Скрытые проблемы форматирования с помощью STR()

Пересказ статьи Jeff Moden. Hidden Formatting Troubles with STR() (SQL Spackle)



Введение


Все мы знаем, что форматирование данных в SQL Server, это то, чего не следует делать, но нам иногда требуется как-то отформатировать вывод в файл или по другим не связанным с GUI причинам.

Функция STR () кажется очень удобной для форматирования. И это так. Она округляет до заданного числа десятичных знаков. Она позволяет вам контролировать отображаемую ширину колонки вывода. Для чего еще, можете вы спросить. Если вы используете STR() не только для простых целых чисел или предварительно округленных значений, ответом может быть "новое задание". Давайте посмотрим...
Продолжить чтение "Скрытые проблемы форматирования с помощью STR()"
Категории: T-SQL

Как команда CHOOSE влияет на производительность?

Пересказ статьи Grant Fritchey. HOW DOES THE CHOOSE COMMAND AFFECT PERFORMANCE?


На первый взгляд, я, честно говоря, не думаю, что она сама по себе влияет на производительность, и зависит от того, где и как вы ее используете. Однако ответ всегда лучше подкреплять тестированием.
Продолжить чтение "Как команда CHOOSE влияет на производительность?"