Сводка
В этом обновлении появился новый аргумент подсказки запроса, 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 создать план, который не использует изменения цели строки с запросами, содержащими следующие ключевые слова:
|
|
| 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).
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.