Skip to content

Новости за неделю 2020-01-25 - 2020-01-31

§ Выполнен пересчет сложности задач обучающего этапа. Возможны незначительные изменения в рейтинге.

§ Под номером 75 на обучающий этап выставлена новая задача (сложность 2 балла). Прежняя задача 75 перенесена на номер 151.

Продолжить чтение "Новости за неделю 2020-01-25 - 2020-01-31"

Поколоночные индексы - что это?

Пересказ статьи Monica Rathbun. What are Columnstore Indexes?


Майкрософт продолжает повышать производительность SQL Server, вводя новые возможности. В этой статье объясняется как работать с индексами поколоночного хранения - отличным от построчного способом хранить таблицы, который значительно улучшает производительность при определенной рабочей нагрузке.
Продолжить чтение "Поколоночные индексы - что это?"

Использование предложения OUTPUT (для операторов Insert и Delete)

Пересказ статьи Mat Richardson. OUTPUT Clause Basics (For Inserts and Deletes)


При обработке сложных операторов insert, update и delete часто полезно знать, что изменилось - для аудита или чтобы вернуть значение в вызывающее приложение (например, ID или другое значение после вставки). Предложение OUTPUT в T-SQL позволяет вам сделать именно это, что действительно очень просто. Я покажу вам как!
Продолжить чтение "Использование предложения OUTPUT (для операторов Insert и Delete)"
Категории: T-SQL

Почему Not Exist более осмыслен, чем Left Join

Пересказ статьи Erik Darling. Why Not Exists Makes More Sense Than Left Joins



Задача


Требуется найти строки в одной таблице, которым нет соответствия в другой таблице. Это может быть процесс сверки данных или же часть работы ETL, или еще что-то.
Продолжить чтение "Почему Not Exist более осмыслен, чем Left Join"

Новости за неделю 2020-01-18 - 2020-01-24

§ Под номером 306 выставлен для обсуждения очередной кандидат на обучающий этап (сложность 1 балл). Прежняя задача 306 перенесена на обучающий этап под номером 150.


Продолжить чтение "Новости за неделю 2020-01-18 - 2020-01-24"

Каждый план выполнения есть предполагаемый план

Пересказ статьи Grant Fritchey. Every Execution Plan Is An Estimated Plan



Давайте поговорим о различных планах, которые можно получить в SQL Server.

Предполагаемый план (Estimated Plan)


Для генерации этого плана вместо выполнения запроса, пакета, хранимой процедуры вы в SQL Server Management Studio (SSMS) используете кнопку “Display Estimated Execution Plan” (показать предполагаемый план выполнения).
Продолжить чтение "Каждый план выполнения есть предполагаемый план"

Быстрей ли хранимые процедуры, чем автономные запросы?

Пересказ статьи Bert Wagner. Are Stored Procedures Faster Than Stand-Alone Queries?



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

Давайте обсудим почему.
Продолжить чтение "Быстрей ли хранимые процедуры, чем автономные запросы?"

Пробелы, регистр символов и другие вещи, которые мешают повторному использованию плана

Пересказ статьи Bert Wagner. Whitespace, Letter Case, and Other Things That Prevent Plan Reuse



Помимо расхождения в пробелах, SQL Server не будет повторно использовать планы запросов по разнообразным причинам. Сейчас я покажу некоторые из наиболее общих сценариев, когда план не будет использоваться.
Продолжить чтение "Пробелы, регистр символов и другие вещи, которые мешают повторному использованию плана"

Почему Parameter Sniffing не всегда плохо (хотя обычно так и есть)

Пересказ статьи Bert Wagner. Why Parameter Sniffing Isn’t Always A Bad Thing (But Usually Is)



С одной стороны, это хорошо: это означает, что SQL Server кэширует и повторно использует планы запросов, чтобы заставить их выполняться быстрее.

Parameter sniffing (прослушивание параметров) только тогда становится проблемой, когда кэшированный план далек от оптимального плана для заданных входных параметров.

Продолжить чтение "Почему Parameter Sniffing не всегда плохо (хотя обычно так и есть)"

Понимание хеш соединений в MySQL 8

Пересказ статьи Tibor Korocz. Understanding Hash Joins in MySQL 8



В MySQL 8.0.18 появилась новая функция, которая называется Hash Join, и я захотел посмотреть, как она работает, и в каких ситуациях она может нам помочь.

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

Как я использую планы выполнения в SQL Server для решения проблем

Пересказ статьи Bert Wagner. How I Troubleshoot SQL Server Execution Plans



Сегодня я подвожу итоги моей серии статей по планам выполнения SQL Server, рассматривая конкретные шаги, которые я предпринимаю при устранении проблем с медленно выполняющимися запросами.
Продолжить чтение "Как я использую планы выполнения в SQL Server для решения проблем"

Операторы (итераторы) плана выполнения в SQL Server

Пересказ статьи Bert Wagner. SQL Server Execution Plan Operators



При исследовании плана выполнения запроса некоторые операторы возникают снова и снова в качестве виновников многих проблем с производительностью.
Продолжить чтение "Операторы (итераторы) плана выполнения в SQL Server"