KB3189813 - Обновление введено в SQL Server 2016 аргумента подсказки запроса USE HINT

Применяется к
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

Сводка

В этом обновлении появился новый аргумент подсказки запроса, USE HINT, который позволяет управлять оптимизатором запросов без повышения учетных данных или участия в роли сервера sysadmin. Синтаксис этой новой подсказки запроса выглядит следующим образом:

<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}

      

В этом обновлении также представлены следующие параметры подсказки, которые можно использовать с аргументом USE HINT.

Параметр Эквивалентный флаг трассировки Описание Относится к
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS TF 9476 Заставляет SQL Server создать план запроса с использованием допущения простого вложения вместо допущения базового вложения по умолчанию для соединений в соответствии с моделью оценки количества оптимизатора запросов SQL Server 2014 (12.x) или более поздней версии.
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES TF 4137 Заставляет SQL Server создать план с использованием минимальной избирательности при оценке И предикатов для фильтров с учетом корреляции. Эта подсказка параллельна флагу трассировки 4137 при использовании с моделью оценки количества элементов SQL Server 2012 (11.x) и более ранних версий и имеет аналогичный эффект, когда флаг трассировки 9471 используется с моделью оценки количества элементов SQL Server 2014 (12.x) или более поздних версий.
DISABLE_BATCH_MODE_ADAPTIVE_JOINS Отключает пакетное подключение к группе. начиная с SQL Server 2017
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK Отключает пакетный режим обратной связи по временно предоставленным буферам памяти. начиная с SQL Server 2017
DISABLE_DEFERRED_COMPILATION_TV Отключает отложенную компиляцию переменных таблицы. начиная с SQL Server 2019
DISABLE_INTERLEAVED_EXECUTION_TVF Отключает чередование выполнения для функций с табличным значением и несколькими инструкциями. начиная с SQL Server 2017
DISABLE_OPTIMIZED_NESTED_LOOP TF 2340 Указывает обработчику запросов не использовать операцию сортировки (пакетную сортировку) для оптимизированных соединений вложенных циклов при создании плана запроса.
DISABLE_OPTIMIZER_ROWGOAL TF 4138 Заставляет SQL Server создать план, который не использует изменения цели строки с запросами, содержащими следующие ключевые слова:

  • TOP
  • ПАРАМЕТР (БЫСТРЫЙ N)
  • IN
  • EXISTS
DISABLE_PARAMETER_SNIFFING TF 4136 Указывает оптимизатору запросов использовать среднее распределение данных при компиляции запроса с одним или несколькими параметрами. Эта инструкция делает план запроса независимым от значения параметра, которое было впервые использовано при компиляции запроса. Используйте эту подсказку для переопределения параметра конфигурации области базы данных PARAMETER_SNIFFING=OFF.
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK Отключает режим строк обратную связь по временно предоставленному буферу памяти. начиная с SQL Server 2019
DISABLE_TSQL_SCALAR_UDF_INLINING Отключает подстановку скалярных UDF. начиная с SQL Server 2019
DISALLOW_BATCH_MODE Отключает выполнение пакетного режима. начиная с SQL Server 2019
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS TF 4139 Включает автоматически генерируемую быструю статистику (изменение гистограммы) для любого столбца начального индекса, для которого требуется оценка кратности. Гистограмма, используемая для оценки кратности, корректируется во время компиляции запроса с учетом фактического максимального или минимального значения этого столбца.
ENABLE_QUERY_OPTIMIZER_HOTFIXES TF 4199 Включает исправления оптимизатора запросов (изменения, выпущенные в накопительных обновлениях и пакетах обновления SQL Server). Используйте эту подсказку, чтобы переопределить параметр конфигурации области базы данных QUERY_OPTIMIZER_HOTFIXES=ON.
FORCE_DEFAULT_CARDINALITY_ESTIMATION TF 9481 Оптимизатор запросов использует модель оценки количества элементов, соответствующую текущему уровню совместимости базы данных. Используйте эту подсказку, чтобы переопределить параметр конфигурации области базы данных LEGACY_CARDINALITY_ESTIMATION=ON.
FORCE_LEGACY_CARDINALITY_ESTIMATION TF 9481 Заставляет оптимизатор запросов использовать модель оценки количества элементов SQL Server 2012 (11.x) и более ранних версий. Используйте эту подсказку, чтобы переопределить параметр конфигурации области базы данных LEGACY_CARDINALITY_ESTIMATION=ON.
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n Обеспечивает поведение оптимизатора запросов на уровне запроса. Это поведение происходит так, как если бы запрос был скомпилирован с уровнем совместимости базы данных n, где n — поддерживаемый уровень совместимости базы данных. Список поддерживаемых в настоящее время значений для n см. в разделе sys.dm_exec_valid_use_hints. начиная с SQL Server 2017 (14.x) CU10

Дополнительные сведения см. в статье Подсказки (Transact-SQL) — запрос.

Дополнительные сведения

Это обновление включено в пакет обновления 1 для SQL Server 2016.

Сведения о сборках SQL Server 2016

Каждая новая сборка SQL Server 2016 содержит все исправления и исправления безопасности, которые были внесены в предыдущую сборку. Рекомендуется установить последнюю сборку SQL Server 2016.

Сценарии, в которых необходимо указывать на поведение оптимизатора запросов SQL Server, довольно распространены, и традиционно для их решения используются несколько (задокументированных и недокументированных) флагов трассировки. Однако глобальные флаги трассировки могут отрицательно сказаться на других рабочих нагрузках. Кроме того, включение их на сеанс непрактично для существующих приложений, а включение их для каждого запроса с помощью OPTION QUERYTRACEON требует членства в роли фиксированного сервера sysadmin. (Хотя это поведение можно обойти с помощью руководства по плану или хранимой процедуры, по-прежнему требуются учетные данные с повышенными правами.)

Флаги трассировки используются для временной настройки определенных характеристик сервера или для отключения определенного поведения. Ими может быть сложно управлять и понимать.

Сведения о флагах трассировки см. в разделе Флаги трассировки (Transact-SQL) на веб-сайте Microsoft Developer Network (MSDN).

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.