Skip to content

Увеличение отображения плана запроса в SQL Server на весь экран

Пересказ статьи Greg Robidoux. Maximize View of SQL Server Query Plans with Full Screen Option


Замечательной особенностью SQL Server является возможность отображения графических планов запросов. Проблема с графическими планами состоит в том, что они зачастую очень большие, и весьма затруднительно перемещаться по плану в поисках проблем вашего запроса или запросов. В SQL Server Management Studio у вас есть возможность изменять масштаб, а также открывать определенные части плана, перемещая мышь на сжатые версии плана запроса. Однако при этом вы ограничены панелью результатов для просмотра плана, и это еще больше затрудняет нахождение нужной информации. Существуют ли приемы, которые бы сделали навигацию по плану запроса легче? Continue reading "Увеличение отображения плана запроса в SQL Server на весь экран"

Использование HierarchyID в SQL Server на простых примерах

Пересказ статьи Edwin Sanchez. How to Use SQL Server HierarchyID Through Easy Examples


Вы еще используете родительско-дочерний подход или хотели бы попробовать что-то новое типа hierarchyID? Да, это относительно новое, поскольку hierarchyID появился в SQL Server 2008. Конечно, новизна, сама по себе, не является аргументом. Однако заметьте, что Microsoft добавил эту функциональность для лучшего представления многоуровневых отношений один-ко-многим. Continue reading "Использование HierarchyID в SQL Server на простых примерах"

Query memory grants. Часть 2: Varchar и сортировка

Пересказ статьи Arthur Daniels. Query memory grants part 2: Varchars and sorting


Какого черта мы сделали все наши столбцы varchar? Это гипотетический вопрос, извините.

И теперь мы должны заплатить за наши решения. Рассмотрим запрос, который должен выполнить некоторую сортировку. Давайте возьмем таблицу, которую нужно отсортировать.
Continue reading "Query memory grants. Часть 2: Varchar и сортировка"

Query memory grants. Часть 1: куда девается память?

Пересказ статьи Arthur Daniels. Query memory grants part 1: Where does the memory go?


Давайте поговорим о том, как запросы используют память, а именно, в плане выполнения. Одним из операторов запроса, который использует память, является сортировка. Чтобы продемонстрировать это, я напишу запрос с предложением ORDER BY и покажу план выполнения.
Continue reading "Query memory grants. Часть 1: куда девается память?"

Неприятный побочный эффект OUTPUT

Пересказ статьи Erik Darling. An Unfortunate Side Effect Of OUTPUT


Время от времени я встречаю людей, которые используют OUTPUT для аудита модификаций чаще всего потому, что "триггеры - это плохо" или "триггеры медленные".

Хорошо, иногда это действительно так. Но использование OUTPUT тоже может быть неудачным решением. Continue reading "Неприятный побочный эффект OUTPUT"

Кучи в SQL Server: часть 2 - оптимизация чтений

Пересказ статьи Uwe Ricken. Heaps in SQL Server: Part 2 Optimizing Reads


Пока эта серия состоит из:

  1. Кучи в SQL Server: часть 1 - основы

  2. Кучи в SQL Server: часть 2 - оптимизация чтений (эта статья)

  3. Кучи в SQL Server: часть 3 - некластеризованные индексы


Кучи вряд ли являются любимцами разработчика, поскольку они не очень производительны, особенно когда дело доходит до выборки данных (так думает большинство людей!). Определенно, какая-то правда есть в этом мнении, однако окончательно все решает рабочая нагрузка. В этой статье я описываю, как работает куча при выборке данных. Если вы понимаете процесс, который происходит в SQL Server при чтении данных из кучи, вы сможете легко решить, является ли куча лучшим решением для вашей рабочей нагрузки.
Continue reading "Кучи в SQL Server: часть 2 - оптимизация чтений"

OPENJSON и CROSS APPLY

Пересказ статьи Marty Catherall. OPENJSON and CROSS APPLY


OPENJSON является основным средством манипуляции документами JSON в T-SQL.

Мы уже видели, что можем использовать схему по умолчанию, которая вернет метаданные о документе JSON, или же можем использовать явную схему, когда мы вводим предложение WITH и PATH - путь к требуемым данным.

Пока в наших примерах мы использовали либо схему по умолчанию, либо явную схему, но не смешивали их вместе.
Continue reading "OPENJSON и CROSS APPLY"

OPENJSON и алиас

Пересказ статьи Marty Catherall. OPENJSON and an Alias


Использование алиасов в T-SQL является делом обычным.
Мы можем присваивать алиасы как таблицам (предложение FROM) и столбцам (предложение SELECT), так и некоторым другим вещам. Это важно для написания хороших запросов на T-SQL. Continue reading "OPENJSON и алиас"

OPENJSON: получение данных и PATH - часть 2

Пересказ статьи Marty Catherall. OPENJSON Getting to the data, and the PATH – PART II


Мы видели как вытащить данные из документа JSON в реляционную таблицу, используя явную схему, которая была определена в предложении WITH табличнозначной функции OPENJSON. Continue reading "OPENJSON: получение данных и PATH - часть 2"

OPENJSON: Получение данных и PATH - часть 1

Пересказ статьи Marty Catherall. OPENJSON Getting to the data, and the PATH – PART I


Недавно мы использовали FOR JSON PATH для преобразования табличных данных (взятых непосредственно из таблицы SQL) в документ JSON.
PATH, о котором мы говорим здесь, используется с OPENJSON для получения данных, которые содержатся в документе JSON.

Мы видели пример OPENJSON и читали данные с явной схемой.
Continue reading "OPENJSON: Получение данных и PATH - часть 1"

OPENJSON, явная схема и тип данных

Пересказ статьи Marty Catherall. OPENJSON, explicit schema and data type


Когда мы читали данные из документа в табличный формат, то указывали такие столбцы:
* value (значение)
* minimum (минимум)
* maximum (максимум)
* value_in_use (используемое значение)
* description (описание)

Continue reading "OPENJSON, явная схема и тип данных"

Почему порядок не гарантируется без ORDER BY

Пересказ статьи Brent Ozar. Why Ordering Isn’t Guaranteed Without an ORDER BY


Если ваш запрос не имеет предложения ORDER BY, вы не можете надежно предсказать неизменность порядка результатов с течением времени.
Конечно, сначала это будет выглядеть предсказуемо, но в будущем, когда что-то будет меняться - индексы, таблица, конфигурация сервера, размер ваших данных - вы можете столкнуться с неприятными сюрпризами.
Continue reading "Почему порядок не гарантируется без ORDER BY"

Что если вам действительно необходимо сжать базу данных?

Пересказ статьи Brent Ozar. What If You Really DO Need to Shrink a Database?


Вы уже слышали, что сжатие базы данных - это плохо, поскольку связано с появлением как внешней, так и внутренней фрагментации, вызывает блокировки, рост журнала транзакций при запуске, а также является медленным и однопоточным. Вы понимаете, что если речь идет всего лишь о 10-20-30% базы данных, а база данных составляет всего 100-200 ГБ, то вы можете спокойно оставить это место, потому что все равно будете его использовать.
Continue reading "Что если вам действительно необходимо сжать базу данных?"

Старшинство типов данных и неявное преобразование

Пересказ статьи Bert Wagner. Data Type Precedence and Implicit Conversions


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


Continue reading "Старшинство типов данных и неявное преобразование"

Что это за тип данных SQL_VARIANT?

Пересказ статьи Kenneth Fisher. What is the datatype SQL VARIANT



Тип данных SQL_VARIANT - интересный зверь. Это тип данных, который может хранить большинство типов данных. Т.е. date, decimal, int, varchar и т.п. могут сохраняться в единственном типе данных. Звучит здорово, не так ли? Ну, тут есть несколько проблем. Continue reading "Что это за тип данных SQL_VARIANT?"