Skip to content

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

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


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

Продолжить чтение "OPENJSON, явная схема и тип данных"
Категории: T-SQL

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

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


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

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

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


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

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

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


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


Продолжить чтение "Старшинство типов данных и неявное преобразование"
Категории: T-SQL

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

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



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

Работа с курсорами SQL

Пересказ статьи Manoj Debnath. Working with SQL Cursors


В языке SQL курсоры служат указателями, которые позволяют языку написания приложений обрабатывать результаты запросов построчно. В данной статье вкратце объясняется концепция и показывается, как объявить курсор, открыть, извлечь из него данные, а затем закрыть. Продолжить чтение "Работа с курсорами SQL"

Удалить таблицу, если она существует

В ранних версиях SQL Server (до 2017) при удалении несуществующей таблицы (DROP TABLE t1;) вы получали сообщение об ошибке:
Не удалось удалить таблицу "t1", так как она не существует или отсутствуют разрешения."
Продолжить чтение "Удалить таблицу, если она существует"
Категории: T-SQL

Модернизация вашего кода T-SQL: объект Sequence

Пересказ статьи Andy Levy. Modernizing Your T-SQL: The Sequence Object



В прошлом году вы наконец-то отправили на пенсию ваш последний экземпляр SQL Server 2008R2. Поздравляю! Но получили ли вы выгоду от всего, что предлагают вам новые экземпляры? До тех пор, пока вы не сделаете обзор кода T-SQL в ваших приложениях, полагаю, что нет.
Продолжить чтение "Модернизация вашего кода T-SQL: объект Sequence"
Категории: T-SQL

Почему народ не использует индексы поколоночного хранения?

Пересказ статьи Grant Fritchey. WHY DON’T PEOPLE USE COLUMNSTORE INDEXES?



Если позволите, я хочу поговорить о расширенных событиях (Extended Events), прежде чем перейти к поколоночному хранению.
Продолжить чтение "Почему народ не использует индексы поколоночного хранения?"

Оптимизированнные для памяти таблицы в SQL Server

Пересказ статьи Monica Rathbun. Memory Optimized Tables in SQL Server



Иногда, когда я пытаюсь узнать о новой концепции, мой мозг отключается. Разговоры обо всем, что использует концепцию «In Memory», из той же серии. Важно отметить, что «In Memory» является маркетинговым термином для ряда особенностей в SQL Server, которые имеют общее поведение, но по сути не связанных между собой. Продолжить чтение "Оптимизированнные для памяти таблицы в SQL Server"

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

Пересказ статьи 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

Это ведь NOLOCK хорошо, когда данные не меняются, правильно?

Пересказ статьи Brent Ozar. But NOLOCK Is Okay When The Data Isn’t Changing, Right?


Я уже объяснил, как NOLOCK дает случайные результаты, когда вы запрашиваете данные, которые изменяются. И это реально мощная демонстрация для тех, кто думает, что NOLOCK безопасно использовать на рабочем сервере. Однако мне неоднократно задавали вопрос:

Продолжить чтение "Это ведь NOLOCK хорошо, когда данные не меняются, правильно?"

Используете NOLOCK? Так вот вы и получаете неверные результаты запроса

Пересказ статьи Brent Ozar. Using NOLOCK Here’s How You’ll Get the Wrong Query Results.


Волшебный WITH(NOLOCK) в вашем запросе, похоже, заставляет его выполняться быстрее. А как насчет недостатков? Давайте разберемся.
Продолжить чтение "Используете NOLOCK? Так вот вы и получаете неверные результаты запроса"

PARSE или CAST и CONVERT

Пересказ статьи Max Vernon. PARSE vs CAST and CONVERT



T-SQL обычно предоставляет много способов "снять шкурку с кота", как говорится. Здесь мы рассмотрим два интересных способа преобразования дат и времени из символьных столбцов в столбец, использующий тип данных datetime.
Продолжить чтение "PARSE или CAST и CONVERT"
Категории: T-SQL