Skip to content

PARSE или CAST и CONVERT

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



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

Новости за неделю 2019-11-23 - 2019-11-29

§ Стартовало народное голосование в рамках очередной Премии Рунета. Поддержите проект sql-ex.ru голосованием.


§ Новая задача от selber выставлена в раздел DML под номером 42 (сложность 3 балла).


Продолжить чтение "Новости за неделю 2019-11-23 - 2019-11-29"

О хранилище запросов, навязывании плана и табличных переменных

Пересказ статьи Grant Fritchey. Query Store, Plan Forcing and Table Variables



Steinar Andersen рассказал о проблеме, с которой он столкнулся при навязывании планов, которые содержали табличные переменные.

Без паники. Конечно, по большей части вы можете навязывать план с табличными переменными. У Стейнара была довольно специфическая проблема. Прежде чем я перейду к объяснению, замечу, что Стейнар сам все понял. Когда он описывал проблему, я сразу понял, каким будет его вывод. Меня подвигло на этот пост сообщение Стейнара о том, что он нигде не нашел обсуждения этой проблемы. Так что давайте поговорим о ней.
Продолжить чтение "О хранилище запросов, навязывании плана и табличных переменных"

Навязывание плана в SQL Server

Пересказ статьи Erin Stellato. Plan Forcing in SQL Server


Навязанные планы (Plan Forcing) в SQL Server предоставляют очень легкий метод для DBA и разработчиков стабилизировать производительность запроса. Однако plan forcing не является постоянным решением. Plan forcing опирается на следующие предпосылки: существует множество планов для запроса, и один из них наиболее предпочтителен с точки зрения производительности. Продолжить чтение "Навязывание плана в SQL Server"

Автоматическая корректировка планов в SQL Server

Пересказ статьи Erin Stellato. Automatic Plan Correction in SQL Server



Возможность автоматической настройки в SQL Server 2017 Enterprise Edition и Azure SQL Database является первым шагом к сокращению времени профессионалами в области данных, которое они проводят в поисках решения проблем с производительностью. Эта возможность включает автоматическую коррекцию плана (Automatic Plan Correction) и автоматическое управление индексами (Automatic Index Management - только в Azure SQL Database), которые доступны независимо друг от друга. Здесь я хочу рассмотреть Automatic Plan Correction. С этой опцией, если SQL Server обнаруживает, что запрос существенно проигрывает в производительности, он навязывает ему последний известный хороший план, чтобы стабилизировать производительность. По сути, вместо вас, администратора баз данных или разработчика, которым на выходных звонят по поводу производительности системы, SQL Server сам решит эту проблему. Звучит слишком просто, не так ли? Давайте приглядимся.
Продолжить чтение "Автоматическая корректировка планов в SQL Server"

Apply против соединения вложенными циклами

Пересказ статьи Paul White. Apply versus Nested Loops Join


SQL является декларативным языком. Мы используем SQL, чтобы написать логическую спецификацию запроса, описывающую результат, который мы хотим получить. Например, мы могли бы написать запрос с использование либо APPLY, либо JOIN, которые логически описывают в точности одни и те же результаты.
Продолжить чтение "Apply против соединения вложенными циклами"

Процедура sp_execute_external_script и SQL-инъекция

Пересказ статьи Grant Fritchey. sp_execute_external_script and SQL Injection



Для того, чтобы иметь возможность использовать R и Python (а также Java в SQL Server 2019) непосредственно из ваших скриптов SQL Server, применяется процедура sp_execute_external_script. Когда вы видите этот код впервые, он напоминает sp_execute_sql. Первое, что приходит на ум, это "О, нет. Еще одно лазейка для проникновения SQL-инъекции." У меня есть для вас несколько хороших и плохих новостей.
Продолжить чтение "Процедура sp_execute_external_script и SQL-инъекция"
Категории: T-SQL

Введение в статистику SQL Server

Пересказ статьи Johnny Bieber. Introduction to Statistics


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

Порядок выполнения предикатов на столбцах, содержащих данные разных типов

Пересказ статьи Bert Wagner. Predicate Execution Order on Mixed Data Type Columns



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