Skip to content

Типы индексов SQL Server

Пересказ статьи Ben Snaidero. Types of SQL Server Indexes



Проблема


Производительность запросов. Взять запрос и заставить его выполняться быстрей, чем прежде, или потреблять меньше ресурсов - достаточная мотивация. В большинстве случаев улучшения производительности можно достичь добавлением индекса к столбцам, используемым в предикате запроса. Направление дает либо предложение WHERE, либо ORDER BY, или даже просто столбцы в предложении SELECT. Если вы новичок в SQL Server с его различными типами имеющихся индексов, бывает трудно решить, какой из них лучше всего подошел бы в вашем конкретном случае. Здесь мы пройдемся по всем типам доступных индексов, чтобы дать вам обзор, а также совет относительно применения того или иного индекса в конкретном случае использования.
Продолжить чтение "Типы индексов SQL Server"

Уровни изоляции транзакций

Пересказ статьи aveek22. Transaction Isolation Levels



Введение


Работая с базами данных SQL, мы часто пишем запросы, не задумываясь о том, как запрос собирается читать данные из соответствующих таблиц. Как мы знаем, базы данных проектируются в соответствии с базовыми свойствами ACID (атомарность, согласованность, изоляция, длительность), и каждое свойство изоляции гарантирует корректную целостность в рамках транзакции, выполняемой в сеансе. Проще говоря, это означает, что когда транзакция выполняется, ядро считает, что она является единственной транзакцией в сеансе. Это свойство базы данных помогает поддерживать согласованность системы, а также является важным фактором чтения данных из источника при одновременном выполнении множества транзакций в том же и других сеансах.
Продолжить чтение "Уровни изоляции транзакций"

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

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

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

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

Использование предложения 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"

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

Пересказ статьи 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 для решения проблем"