Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Конечная точка аналитики SQL в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Подсказки запросов указывают, что указанные подсказки используются в области запроса. Они влияют на все операторы в инструкции. Если UNION
он участвует в основном запросе, то только последний запрос UNION
с участием операции может иметь OPTION
предложение. Подсказки запросов указываются в рамках предложения OPTION. Ошибка 8622 возникает, если одно или несколько подсказок запроса приводит к тому, что оптимизатор запросов не создает допустимый план.
Осторожность
Так как оптимизатор запросов SQL Server обычно выбирает оптимальный план выполнения для запроса, мы рекомендуем использовать только указания в качестве последнего средства для опытных разработчиков и администраторов баз данных.
Относится к:
Соглашения о синтаксисе Transact-SQL
Синтаксис
<query_hint> ::=
{ { HASH | ORDER } GROUP
| { CONCAT | HASH | MERGE } UNION
| { LOOP | MERGE | HASH } JOIN
| DISABLE_OPTIMIZED_PLAN_FORCING
| EXPAND VIEWS
| FAST <integer_value>
| FORCE ORDER
| { FORCE | DISABLE } EXTERNALPUSHDOWN
| { FORCE | DISABLE } SCALEOUTEXECUTION
| IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX
| KEEP PLAN
| KEEPFIXED PLAN
| MAX_GRANT_PERCENT = <numeric_value>
| MIN_GRANT_PERCENT = <numeric_value>
| MAXDOP <integer_value>
| MAXRECURSION <integer_value>
| NO_PERFORMANCE_SPOOL
| OPTIMIZE FOR ( @variable_name { UNKNOWN | = <literal_constant> } [ , ...n ] )
| OPTIMIZE FOR UNKNOWN
| PARAMETERIZATION { SIMPLE | FORCED }
| QUERYTRACEON <integer_value>
| RECOMPILE
| ROBUST PLAN
| USE HINT ( 'hint_name' [ , ...n ] )
| USE PLAN N'<xml_plan>'
| TABLE HINT ( <exposed_object_name> [ , <table_hint> [ [ , ] ...n ] ] )
| FOR TIMESTAMP AS OF '<point_in_time>'
}
<table_hint> ::=
{ NOEXPAND [ , INDEX ( <index_value> [ , ...n ] ) | INDEX = ( <index_value> ) ]
| INDEX ( <index_value> [ , ...n ] ) | INDEX = ( <index_value> )
| FORCESEEK [ ( <index_value> ( <index_column_name> [ , ... ] ) ) ]
| FORCESCAN
| HOLDLOCK
| NOLOCK
| NOWAIT
| PAGLOCK
| READCOMMITTED
| READCOMMITTEDLOCK
| READPAST
| READUNCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| SNAPSHOT
| SPATIAL_WINDOW_MAX_CELLS = <integer_value>
| TABLOCK
| TABLOCKX
| UPDLOCK
| XLOCK
}
Аргументы
{ HASH | ORDER } GROUP
Указывает, что агрегаты, описываемые запросом GROUP BY
или DISTINCT
предложением, должны использовать хэширование или упорядочивание.
- Как правило, хэш-алгоритм может повысить производительность запросов, включающих большие или сложные наборы группирования.
- Как правило, алгоритм на основе сортировки может повысить производительность запросов, включающих небольшие или простые наборы группирования.
{ MERGE | ХЭШ | CONCAT } UNION
Указывает, что все UNION
операции выполняются путем объединения, хэширования или объединения UNION
наборов. Если указано несколько UNION
подсказок, оптимизатор запросов выбирает наименьшую дорогостоящую стратегию из указанных подсказок.
- Как правило, операция алгоритма на основе слияния может повысить производительность запросов, включающих отсортированные входные данные.
- Как правило, хэш-алгоритм может повысить производительность запросов, включающих несортированные или большие входные данные.
- Как правило, алгоритм на основе объединения может повысить производительность запросов, включающих отдельные или небольшие входные данные.
{ LOOP | MERGE | HASH } JOIN
Указывает, что все операции соединения выполняются LOOP JOIN
MERGE JOIN
или HASH JOIN
в целом запросе. Если указать несколько указаний на соединение, оптимизатор выбирает из разрешенных стратегий оптимизатора наименьшую затратную стратегию присоединения.
Если указать указание соединения в предложении одного запроса FROM
для определенной пары таблиц, это указание соединения имеет приоритет при присоединении двух таблиц. Однако намеки на запрос все еще должны быть учтены. Указание соединения для пары таблиц может ограничить только выбор разрешенных методов соединения в подсказке запроса. Дополнительные сведения см. в указаниях на присоединение.
DISABLE_OPTIMIZED_PLAN_FORCING
Область применения: SQL Server (начиная с SQL Server 2022 (16.x))
Отключает оптимизированный план для запроса.
Принудительное выполнение оптимизированного плана сокращает затраты на компиляцию при повторном выполнении принудительных запросов. После создания плана выполнения запроса этапы компиляции сохраняются для повторного использования в виде сценария воспроизведения оптимизации. Сценарий воспроизведения оптимизации хранится как часть сжатого XML-файла Showplan в хранилище запросов в скрытом атрибуте OptimizationReplay
.
РАЗВЕРТЫВАНИЕ ПРЕДСТАВЛЕНИЙ
Указывает, что индексированные представления развернуты. Также указывает, что оптимизатор запросов не рассматривает индексированные представления как замену для любой части запроса. Представление расширяется, когда определение представления заменяет имя представления в тексте запроса.
Это указание запроса практически запрещает прямое использование индексированных представлений и индексов для индексированных представлений в плане запроса.
Замечание
Индексированного представления остается сжатым, если в части запроса SELECT
есть прямая ссылка на представление. Представление также остается сжатым при указании WITH (NOEXPAND)
или WITH (NOEXPAND, INDEX( <index_value> [ , *...n* ] ) )
. Дополнительные сведения о указании NOEXPAND
запроса см. в разделе "Использование NOEXPAND".
Указание влияет только на представления в части инструкцийSELECT
, включая эти представления в INSERT
, UPDATE
MERGE
и DELETE
инструкции.
FAST integer_value
Указывает, что запрос оптимизирован для быстрого получения первого integer_value числа строк. Результатом является неотрицательное целое число. После возврата первого integer_value числа строк запрос продолжает выполнение и создает полный результирующий набор.
FORCE ORDER
Указывает, что порядок соединения, указанный синтаксисом запроса, сохраняется во время оптимизации запроса. Использование FORCE ORDER
не влияет на возможное поведение разворота роли оптимизатора запросов.
FORCE ORDER
сохраняет порядок соединения, указанный в запросе, что может повысить производительность или согласованность запросов, включающих сложные условия соединения или указания.
Замечание
MERGE
В инструкции исходная таблица обращается к целевой таблице в качестве порядка соединения по умолчанию, если WHEN SOURCE NOT MATCHED
предложение не указано. Указание FORCE ORDER
этого поведения по умолчанию сохраняется.
{ FORCE | DISABLE } EXTERNALPUSHDOWN
Принудительное или отключение отступа вычислений подходящих выражений в Hadoop. Применяется только к запросам с помощью PolyBase. Не отправляется в хранилище Azure.
{ FORCE | DISABLE } SCALEOUTEXECUTION
Принудительное или отключение горизонтального масштабирования запросов PolyBase, использующих внешние таблицы в кластерах больших данных SQL Server 2019. Это указание учитывается только запросом с помощью главного экземпляра кластера больших данных SQL. Горизонтальное масштабирование выполняется в пуле вычислений кластера больших данных.
СОХРАНИТЬ ПЛАН
Изменяет пороговые значения перекомпиляции временных таблиц и делает их идентичными пороговым значениям для постоянных таблиц. Предполагаемое пороговое значение повторной компиляции запускает автоматическую компиляцию для запроса при внесении в таблицу предполагаемого количества изменений индексированного столбца, выполнив одну из следующих инструкций:
UPDATE
DELETE
MERGE
INSERT
При указании KEEP PLAN
убедитесь, что запрос не перекомпилируется как часто при наличии нескольких обновлений в таблице.
ПЛАН KEEPFIXED
Принудительно оптимизатор запросов не перекомпилировать запрос из-за изменений статистики. При KEEPFIXED PLAN
указании убедитесь, что запрос перекомпиляция выполняется только в том случае, если схема базовых таблиц изменяется или выполняется sp_recompile
в этих таблицах.
IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX
Область применения: SQL Server (начиная с SQL Server 2012 (11.x)).
Запрещает запросу использовать некластеризованный индекс columnstore, оптимизированный для памяти. Если запрос содержит указание запроса, чтобы избежать использования индекса columnstore, а также указание индекса для использования индекса columnstore, указания находятся в конфликте, а запрос возвращает ошибку.
MAX_GRANT_PERCENT = <numeric_value>
Область применения: SQL Server (начиная с SQL Server 2012 (11.x) с пакетом обновления 3(SP3), SQL Server 2014 (12.x) с пакетом обновления 2 и Базой данных SQL Azure.
Максимальный размер предоставления памяти в PERCENT
настроенном ограничении памяти. Запрос не будет превышать это ограничение, если запрос выполняется в определяемом пользователем пуле ресурсов. В этом случае, если запрос не имеет минимальной требуемой памяти, система вызывает ошибку. Если запрос выполняется в системном пуле (по умолчанию), он получает как минимум память, необходимую для выполнения. Фактическое ограничение может быть ниже, если параметр регулятора ресурсов меньше значения, указанного этим указанием. Допустимые значения : от 0.0 до 100.0.
Указание предоставления памяти недоступно для создания индекса или перестроения индекса.
MIN_GRANT_PERCENT = <numeric_value>
Область применения: SQL Server (начиная с SQL Server 2012 (11.x) с пакетом обновления 3(SP3), SQL Server 2014 (12.x) с пакетом обновления 2 и Базой данных SQL Azure.
Минимальный размер предоставления памяти в PERCENT
настроенном ограничении памяти. Запрос гарантированно получается MAX(required memory, min grant)
, так как для запуска запроса требуется по крайней мере требуемая память. Допустимые значения : от 0.0 до 100.0.
Параметр предоставления памяти min_grant_percent переопределяет sp_configure
параметр (минимальная память на запрос (КБ)независимо от размера. Указание предоставления памяти недоступно для создания индекса или перестроения индекса.
MAXDOP <integer_value>
Область применения: SQL Server (начиная с SQL Server 2008 (10.0.x)) и Базы данных SQL Azure.
Переопределяет параметр конфигурации sp_configure
. Также переопределяет регулятор ресурсов для запроса, указывающего этот параметр. Указание MAXDOP
запроса может превышать значение, настроенное с sp_configure
помощью . Если MAXDOP
превышено значение, настроенное с помощью регулятора ресурсов, ядро СУБД использует значение регулятора MAXDOP
ресурсов, описанное в ALTER WORKLOAD GROUP. Все семантические правила, используемые с параметром конфигурации максимальной степени параллелизма , применимы при использовании MAXDOP
указания запроса. Дополнительные сведения см. в разделе Конфигурация сервера: максимальная степень параллелизма.
Предупреждение
Если MAXDOP
задано равно нулю, сервер выбирает максимальную степень параллелизма.
MAXRECURSION <integer_value>
Указывает максимальное количество рекурсий, разрешенных для этого запроса. число является положительным целым числом от 0 до 32 767. Если задано значение 0, ограничение не применяется. Если этот параметр не указан, ограничение по умолчанию для сервера равно 100.
Когда указанное или стандартное число для MAXRECURSION
ограничения достигается во время выполнения запроса, запрос заканчивается и возвращается ошибка.
Из-за этой ошибки все эффекты инструкции откатываются. Если оператор является оператором, частичные SELECT
результаты или не могут быть возвращены. Любые частичные результаты, возвращаемые, могут не включать все строки на уровнях рекурсии за пределы указанного максимального уровня рекурсии.
Дополнительные сведения см. в разделе WITH common_table_expression.
NO_PERFORMANCE_SPOOL
Область применения: SQL Server (начиная с SQL Server 2016 (13.x)) и Базы данных SQL Azure.
Запрещает добавлению оператора spool в планы запросов (за исключением планов, когда spool требуется для обеспечения допустимой семантики обновления). Оператор spool может снизить производительность в некоторых сценариях. Например, используется tempdb
спул, и tempdb
спор может возникать, если существует множество параллельных запросов, выполняемых с операциями с пулом.
OPTIMIZE FOR ( @variable_name { UNKNOWN | = <literal_constant> } [ , ... n ] )
Указывает оптимизатору запросов использовать определенное значение для локальной переменной при компиляции и оптимизации запроса. Значение используется только в процессе оптимизации запроса, но не в процессе выполнения.
@variable_name
Имя локальной переменной, используемой в запросе, которому можно назначить значение для использования с указанием
OPTIMIZE FOR
запроса.UNKNOWN
Указывает, что оптимизатор запросов использует статистические данные вместо начального значения для определения значения локальной переменной во время оптимизации запроса.
literal_constant
Литеральное константное значение, которое должно быть назначено @variable_name для использования с указанием
OPTIMIZE FOR
запроса. literal_constant используется только во время оптимизации запросов, а не как значение @variable_name во время выполнения запроса. literal_constant может быть любым системным типом данных SQL Server, который можно выразить как литеральную константу. Тип данных literal_constant должен быть неявно преобразован в тип данных, который @variable_name ссылки в запросе.
OPTIMIZE FOR может противодействовать поведению обнаружения параметров по умолчанию оптимизатора. Также используется OPTIMIZE FOR
при создании руководств по плану. Дополнительные сведения см. в разделе Перекомпиляция хранимой процедуры.
ОПТИМИЗАЦИЯ ДЛЯ НЕИЗВЕСТНЫХ
Указывает оптимизатору запросов использовать среднюю выборку предиката во всех значениях столбцов, а не использовать значение параметра среды выполнения при компиляции и оптимизации запроса.
Если вы используете OPTIMIZE FOR @variable_name = <literal_constant>
и OPTIMIZE FOR UNKNOWN
в том же указании запроса, оптимизатор запросов использует literal_constant , указанный для определенного значения. Оптимизатор запросов использует UNKNOWN для остальных значений переменной. Значения используются только во время оптимизации запросов, а не во время выполнения запроса.
ПАРАМЕТРИЗАЦИЯ { SIMPLE | ПРИНУДИТЕЛЬНО }
Указывает правила параметризации, которые оптимизатор запросов SQL Server применяется к запросу при компиляции.
Это важно
Указание PARAMETERIZATION
запроса можно указать только в руководстве по плану, чтобы переопределить текущий параметр PARAMETERIZATION
базы данных SET
. Его нельзя указать непосредственно в запросе.
Дополнительные сведения см. в разделе "Указание поведения параметризации запросов" с помощью руководств по плану.
SIMPLE
Указывает оптимизатору запросов попытаться выполнить простую параметризацию.
FORCED
Указывает оптимизатору запросов попытаться принудительной параметризации. Дополнительные сведения см. в руководстве по архитектуре принудительной параметризации в руководстве по архитектуре обработки запросов и простой параметризации в руководстве по архитектуре обработки запросов.
INTEGER_VALUE QUERYTRACEON <>
Этот параметр позволяет включить флаг трассировки, влияющий на план, только во время компиляции с одним запросом. Как и другие параметры уровня запроса, его можно использовать вместе с руководствами по плану для сопоставления текста запроса, выполняемого из любого сеанса, и автоматически применять флаг трассировки, влияющий на план, при компиляции этого запроса. Этот QUERYTRACEON
параметр поддерживается только для флагов трассировки оптимизатора запросов. Дополнительные сведения см. в статье о флагах трассировки.
Использование этого параметра не возвращает никаких ошибок или предупреждений, если используется неподдерживаемый номер флага трассировки. Если указанный флаг трассировки не влияет на план выполнения запроса, параметр автоматически игнорируется.
Чтобы использовать несколько флагов трассировки в запросе, укажите одно QUERYTRACEON
указание для каждого разного номера флага трассировки.
ПЕРЕКОМПИЛИРОВАТЬ
Указывает ядро СУБД SQL Server создать новый временный план для запроса и немедленно отменить этот план после завершения выполнения запроса. Созданный план запроса не заменяет план, хранящийся в кэше, если тот же запрос выполняется без RECOMPILE
указания. Без указания RECOMPILE
, ядро СУБД кэширует планы запросов и повторно использует их. При компиляции RECOMPILE
планов запросов указание запроса использует текущие значения всех локальных переменных в запросе. Если запрос находится внутри хранимой процедуры, текущие значения передаются любым параметрам.
RECOMPILE
является полезной альтернативой созданию хранимой процедуры.
RECOMPILE
WITH RECOMPILE
использует предложение, если необходимо перекомпилировать только подмножество запросов внутри хранимой процедуры вместо всей хранимой процедуры. Дополнительные сведения см. в разделе Перекомпиляция хранимой процедуры.
RECOMPILE
также полезно при создании руководств по плану.
НАДЕЖНЫЙ ПЛАН
Позволяет оптимизатору запросов попробовать план, который работает для максимального потенциального размера строки, возможно, за счет производительности. При обработке запроса промежуточные таблицы и операторы могут хранить и обрабатывать строки, которые шире, чем любая из входных строк при обработке запроса. Строки могут быть настолько широкими, что иногда конкретный оператор не может обработать строку. Если строки являются широкими, ядро СУБД создает ошибку во время выполнения запроса. С помощью ROBUST PLAN
вы указываете оптимизатору запросов не учитывать планы запросов, которые могут возникнуть в этой проблеме.
Если такой план невозможен, оптимизатор запросов возвращает ошибку вместо отсрочки обнаружения ошибок для выполнения запроса. Строки могут содержать столбцы переменной длины; Ядро СУБД позволяет определять строки, имеющие максимальный потенциальный размер, за пределами возможности ядра СУБД обрабатывать их. Как правило, несмотря на максимальный потенциальный размер, приложение хранит строки, имеющие фактические размеры в пределах, которые ядро СУБД может обрабатывать. Если ядро СУБД пересекает слишком длинную строку, возвращается ошибка выполнения.
USE HINT ( "hint_name" )
Область применения: SQL Server (начиная с SQL Server 2016 (13.x) с пакетом обновления 1 (SP1), База данных SQL Azure и Управляемый экземпляр SQL Azure.
Предоставляет один или несколько дополнительных подсказок обработчику запросов. Дополнительные подсказки указываются с именем подсказки внутри отдельных кавычки.
Подсказка
Имена подсказок не учитывает регистр.
Поддерживаются следующие имена подсказок:
Подсказка | Описание |
---|---|
'ABORT_QUERY_EXECUTION'
|
Блокирует выполнение запроса. Предназначено для использования в качестве указания хранилища запросов , чтобы администраторы блокируют будущие выполнение известных проблемных запросов, например неизменяемые запросы, влияющие на рабочие нагрузки приложений. Дополнительные сведения см. в разделе "Блокировка будущего выполнения проблемных запросов". Область применения: Предварительная версия базы данных SQL Azure и SQL Server 2025 (17.x). Это указание находится в предварительной версии. |
'ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP' |
Модель оценки кратности для REGEXP_LIKE предоставляет значения селекторности по умолчанию. Используйте это указание, если оценка по умолчанию слишком высока. Он задает селекторность фиксированному значению более низкой селекторности. Применимо к: Предварительная версия и более поздние версии SQL Server 2025 (17.x) и База данных SQL Azure |
'ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP' |
Модель оценки кратности для REGEXP_LIKE предоставляет значения селекторности по умолчанию. Используйте это указание, если оценка по умолчанию слишком низка. Он задает селекторность фиксированному значению более высокой селекторности. Применимо к: Предварительная версия и более поздние версии SQL Server 2025 (17.x) и База данных SQL Azure |
'ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS'
|
Создает план запроса с помощью допущения простого сдерживания вместо допущения базового сдерживания по умолчанию для соединений в модели оценки кратности запросов SQL Server 2014 (12.x) и более поздних версий. Это имя подсказки эквивалентно флагу трассировки 9476. |
'ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES'
|
Создает план, используя минимальную селекторность при оценке предикатов AND для фильтров для учета полной корреляции. Это имя намека эквивалентно флагу трассировки 4137 при использовании с моделью оценки кратности SQL Server 2012 (11.x) и более ранними версиями и имеет аналогичный эффект, если флаг трассировки 9471 используется с моделью оценки кратности SQL Server 2014 (12.x) и более поздних версий. |
'ASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES' |
Создает план, используя максимальную селекторность при оценке предикатов AND для фильтров, которые будут учитывать полную независимость. Это имя указания — это поведение модели оценки кратности SQL Server 2012 (11.x) и более ранних версий и эквивалентно флагу трассировки 9472 при использовании модели оценки кратности SQL Server 2014 (12.x) и более поздних версий. Область применения: База данных SQL Azure |
'ASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATES' |
Создает план, использующий наименьшую выборку при оценке предикатов AND для фильтров для учета частичной корреляции. Это имя указания — это поведение по умолчанию модели оценки кратности SQL Server 2014 (12.x) и более поздних версий. Область применения: База данных SQL Azure |
'DISABLE_BATCH_MODE_ADAPTIVE_JOINS' |
Отключает адаптивные соединения в пакетном режиме. Дополнительные сведения см. в разделе "Адаптивные соединения в пакетном режиме". Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure |
'DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK' |
Отключает отзыв о предоставлении памяти в пакетном режиме. Дополнительные сведения см. в статье "Предоставление памяти в пакетном режиме". Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure |
'DISABLE_DEFERRED_COMPILATION_TV' |
Отключает отложенную компиляцию табличных переменных. См. дополнительные сведения об отложенной компиляции табличных переменных. Область применения: SQL Server 2019 (15.x) и более поздних версий и База данных SQL Azure |
'DISABLE_INTERLEAVED_EXECUTION_TVF' |
Отключает чередование выполнения для функций с табличным значением с несколькими операторами. Дополнительные сведения см. в разделе "Межличенное выполнение" для функций с табличным значением с несколькими операторами. Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure |
'DISABLE_OPTIMIZED_HALLOWEEN_PROTECTION' |
Отключает оптимизированную защиту Хэллоуина. Дополнительные сведения см. в разделе "Оптимизированная защита Хэллоуина" Область применения: предварительная версия SQL Server 2025 (17.x) |
'DISABLE_OPTIMIZED_NESTED_LOOP' |
Указывает обработчику запросов не использовать операцию сортировки (пакетную сортировку) для оптимизированных соединений вложенных циклов при создании плана запроса. Это имя подсказки эквивалентно флагу трассировки 2340. Это указание также относится к явным сортировкам и пакетным сортировкам. |
'DISABLE_OPTIMIZER_ROWGOAL'
|
Приводит к созданию плана SQL Server, который не использует изменения цели строк с запросами, содержащими эти ключевые слова: - TOP - OPTION (FAST N) - IN - EXISTS Это имя подсказки эквивалентно флагу трассировки 4138. |
'DISABLE_PARAMETER_SNIFFING' |
Оптимизатор запросов указывает оптимизатору запросов использовать среднее распределение данных при компиляции запроса с одним или несколькими параметрами. Эта инструкция делает план запроса независимым от значения параметра, которое было впервые использовано при компиляции запроса. Это имя подсказки эквивалентно параметру конфигурации флага трассировки 4136 или базы данных.PARAMETER_SNIFFING = OFF |
'DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK' |
Отключает отзыв о предоставлении памяти в режиме строки. Дополнительные сведения см. в отзыве о предоставлении памяти в режиме строк. Область применения: SQL Server 2019 (15.x) и более поздних версий и База данных SQL Azure |
'DISABLE_TSQL_SCALAR_UDF_INLINING' |
Отключает скалярную встраивание UDF. Дополнительные сведения см. в статье Скалярная настройка UDF. Область применения: SQL Server 2019 (15.x) и более поздних версий и База данных SQL Azure |
'DISALLOW_BATCH_MODE' |
Отключает выполнение в пакетном режиме. Дополнительные сведения см. в режимах выполнения. Область применения: SQL Server 2019 (15.x) и более поздних версий и База данных SQL Azure |
'ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS' |
Включает автоматически созданную быструю статистику (поправка гистограммы) для любого ведущего столбца индекса, для которого требуется оценка кратности. Гистограмма, используемая для оценки кратности, корректируется во время компиляции запроса для учета фактического максимального или минимального значения этого столбца. Это имя подсказки эквивалентно флагу трассировки 4139. |
'ENABLE_OPTIMIZED_HALLOWEEN_PROTECTION' |
Включает оптимизированную защиту Хэллоуина. Дополнительные сведения см. в разделе "Оптимизированная защита Хэллоуина". Область применения: предварительная версия SQL Server 2025 (17.x) |
'ENABLE_QUERY_OPTIMIZER_HOTFIXES' |
Включает исправления оптимизатора запросов (изменения, выпущенные в накопительных обновлениях и пакетах обновления SQL Server). Это имя подсказки эквивалентно параметру конфигурации флагатрассировки 4199 или базы QUERY_OPTIMIZER_HOTFIXES = ON данных. |
'FORCE_DEFAULT_CARDINALITY_ESTIMATION' |
Принудительно оптимизатор запросов использует модель оценки кратности , соответствующую текущему уровню совместимости базы данных. Используйте это указание для переопределения параметра LEGACY_CARDINALITY_ESTIMATION = ON или флага трассировки 9481. |
'FORCE_LEGACY_CARDINALITY_ESTIMATION'
|
Позволяет оптимизатору запросов использовать модель оценки кратности SQL Server 2012 (11.x) и более ранних версий. Это имя указания эквивалентно параметру конфигурации флагатрассировки 9481 или базы LEGACY_CARDINALITY_ESTIMATION = ON данных. |
'QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n'
1 |
Принудительно выполняет поведение оптимизатора запросов на уровне запроса. Это происходит так, как если бы запрос компилировался с уровнем совместимости базы данных n, где n является поддерживаемым уровнем совместимости базы данных. Список поддерживаемых в настоящее время значений n см. в sys.dm_exec_valid_use_hints. Область применения: SQL Server 2017 (14.x) CU 10 и более поздних версий, а также база данных SQL Azure |
'QUERY_PLAN_PROFILE'
2 |
Включает упрощенное профилирование для запроса. После завершения запроса, содержащего это новое указание, запускается новое расширенное событие query_plan_profile . Это расширенное событие предоставляет статистику выполнения и фактический XML-код плана выполнения, query_post_execution_showplan аналогичный расширенному событию, но только для запросов, содержащих новое указание.Область применения: SQL Server 2016 (13.x) с пакетом обновления 2 (SP 3), SQL Server 2017 (14.x) CU 11 и более поздних версий |
'DISABLE_RESULT_SET_CACHE' |
Отключает кэширование результирующих наборов (предварительная версия) для определенного выполнения запроса, если кэш результирующих наборов включен для текущего подключенного элемента. Это означает, что он не создаст кэш результирующих наборов и не будет использовать существующий кэш результирующих наборов (если таковой есть). Это может быть полезно в сценариях отладки или тестирования A/B. Дополнительные сведения см. в разделе "Кэширование результирующих наборов". Область применения: Microsoft Fabric |
1 Указание QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n
не переопределяет параметр оценки кратности по умолчанию или устаревшей версии, если вы принудительно используете конфигурацию базы данных, флаг трассировки или другое указание запроса, например QUERYTRACEON
. Это указание влияет только на поведение оптимизатора запросов. Это не влияет на другие функции SQL Server, которые могут зависеть от уровня совместимости базы данных, например доступности определенных функций базы данных. Дополнительные сведения см. в разделе "Выбор разработчика: указание модели выполнения запросов".
2 . Если вы включите сбор расширенного query_post_execution_showplan
события, стандартная инфраструктура профилирования добавляется к каждому запросу, работающему на сервере, и поэтому может повлиять на общую производительность сервера. Если вы включите коллекцию расширенных событий для использования упрощенной query_thread_profile
инфраструктуры профилирования вместо этого, это приводит к значительно меньшей производительности, но по-прежнему влияет на общую производительность сервера. Если включить расширенное query_plan_profile
событие, это включает только упрощенную инфраструктуру профилирования для запроса, выполняемого с query_plan_profile
помощью этого запроса, и поэтому не влияет на другие рабочие нагрузки на сервере. Используйте это указание для профилирования конкретного запроса, не затрагивая другие части рабочей нагрузки сервера. Дополнительные сведения об упрощенном профилировании см. в разделе "Инфраструктура профилирования запросов".
Список всех поддерживаемых USE HINT
имен можно запрашивать с помощью динамического представления управления sys.dm_exec_valid_use_hints.
Это важно
Некоторые USE HINT
указания могут конфликтуть с флагами трассировки, включенными на глобальном уровне или уровне сеанса, или параметрами конфигурации базы данных с заданной областью. В этом случае указание уровня запроса (USE HINT
) всегда имеет приоритет.
USE HINT
Если конфликтует с другим указанием запроса или флагом трассировки, включенным на уровне запроса (например, поQUERYTRACEON
), SQL Server создаст ошибку при попытке выполнить запрос.
USE PLAN N'xml_plan'
Принудительно оптимизатор запросов использует существующий план запроса для запроса, указанного xml_plan.
Результирующий план выполнения, вынужденный этой функцией, совпадает или аналогичен принудительному выполнению плана. Так как результирующий план может не совпадать с планом, указанным в USE PLAN
ней, производительность планов может отличаться. В редких случаях разница производительности может быть значительной и отрицательной; В этом случае администратор должен удалить принудительный план.
TABLE HINT ( exposed_object_name [ , <table_hint> [ , ] ... n ] ] )
Применяет указанную подсказку таблицы к таблице или представлению, соответствующей exposed_object_name. Табличные указания рекомендуется использовать в качестве подсказок в запросах только в контексте структуры плана.
exposed_object_name может быть одной из следующих ссылок:
Если псевдоним используется для таблицы или представления в предложении FROM запроса, exposed_object_name является псевдонимом.
Если псевдоним не используется, exposed_object_name точное соответствие таблицы или представления в предложении
FROM
. Например, если таблица или представление ссылается с помощью двух частей, exposed_object_name совпадает с двумя именами частей.
При указании exposed_object_name без указания указания таблицы все индексы, указанные в запросе в рамках указания таблицы для объекта, игнорируются. Затем оптимизатор запросов определяет использование индекса. Этот метод можно использовать для устранения эффекта табличного INDEX
указания, если не удается изменить исходный запрос. См . пример J.
<table_hint>
NOEXPAND [ , INDEX ( index_value [ ,... n ] ) | INDEX = ( index_value ) ] | INDEX ( index_value [ ,... n ] ) | INDEX = ( index_value ) | FORCESEEK [ ( index_value ( index_column_name [ ,... ] ) ] | FORCESCAN | HOLDLOCK | NOLOCK | NOWAIT | PAGLOCK | READCOMMITTED | READCOMMITTEDLOCK | READPAST | READUNCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | МОМЕНТАЛЬНЫЙ СНИМОК | SPATIAL_WINDOW_MAX_CELLS = integer_value | TABLOCK | TABLOCKX | UPDLOCK | XLOCK
Указание таблицы, применяемое к таблице или представлению, которое соответствует exposed_object_name в качестве подсказки запроса. Описание этих подсказок см. в описании подсказок таблицы.
Табличные подсказки, отличные INDEX
от , FORCESCAN
и FORCESEEK
запрещены в качестве подсказок запроса, если запрос уже не содержит WITH
предложение, указывающее подсказку таблицы. Дополнительные сведения см. в разделе "Примечания".
Осторожность
Указание FORCESEEK
параметров ограничивает количество планов, которые можно учитывать оптимизатором запросов больше, чем при указании FORCESEEK
без параметров. Это может привести к возникновению ошибки "План не может быть создано" в большем случае.
ДЛЯ МЕТКИ ВРЕМЕНИ КАК "POINT_IN_TIME"
Область применения: хранилище в Microsoft Fabric
TIMESTAMP
Используйте синтаксис в OPTION
предложении, чтобы запросить данные, которые существовали в прошлом, часть функции перемещения по времени в Хранилище данных Synapse в Microsoft Fabric.
Укажите point_in_time в формате yyyy-MM-ddTHH:mm:ss[.fff]
для возврата данных, как это было показано в то время. Часовой пояс всегда находится в формате UTC.
CONVERT
Используйте синтаксис для необходимого формата datetime с стилем 126.
Указание TIMESTAMP AS OF
можно указать только один раз с помощью OPTION
предложения. Дополнительные сведения и ограничения см. в разделе "Запрос данных" по мере его существования в прошлом.
FORCE [ ОДИН УЗЕЛ | РАСПРЕДЕЛЕННЫЙ ] ПЛАН
Область применения: хранилище в Microsoft Fabric
Позволяет пользователю выбрать, следует ли принудительно выполнять один план узла или распределенный план выполнения запроса.
Замечания
Указания запросов не могут быть указаны в INSERT
инструкции, за исключением случаев, когда SELECT
предложение используется внутри инструкции.
Подсказки запросов можно указать только в запросе верхнего уровня, а не в вложенных запросах. При указании таблицы в качестве указания запроса указание может быть указано в запросе верхнего уровня или в вложенных запросах. Однако значение, указанное для exposed_object_name в TABLE HINT
предложении, должно совпадать с именем, предоставленным в запросе или вложенном запросе.
Указание табличных подсказок в качестве подсказок запросов
Рекомендуется использовать INDEX
FORCESCAN
подсказку таблицы или FORCESEEK
подсказку таблицы только в контексте руководства по плану. Руководства по планированию полезны, если вы не можете изменить исходный запрос, например, так как это стороннее приложение. Указание запроса, указанное в руководстве по плану, добавляется в запрос перед компиляцией и оптимизацией. Для нерегламентированных запросов используйте TABLE HINT
предложение только при тестировании инструкций руководства по плану. Для всех других нерегламентированных запросов рекомендуется указывать эти подсказки только в виде табличных подсказок.
При указании запроса INDEX
FORCESCAN
FORCESEEK
подсказки для следующих объектов допустимы подсказки и табличные подсказки:
- Таблицы
- Представления
- Индексированные представления
- Общие табличные выражения (указание должно быть указано в
SELECT
инструкции, результирующий набор которого заполняет общее табличное выражение). - Динамические управленческие представления (DMVs)
- Именованные вложенные запросы
Вы можете указать INDEX
FORCESCAN
FORCESEEK
и табличные подсказки в качестве подсказок запроса для запроса, у которых нет существующих подсказок таблицы. Их также можно использовать для замены существующих INDEX
или FORCESCAN
FORCESEEK
подсказок в запросе соответственно.
Табличные подсказки, отличные INDEX
от , FORCESCAN
и FORCESEEK
запрещены в качестве подсказок запроса, если запрос уже не содержит WITH
предложение, указывающее подсказку таблицы. В этом случае необходимо также указать соответствующее указание в качестве подсказки запроса. Укажите соответствующую подсказку в качестве указания запроса, используя TABLE HINT
его в предложении OPTION
. Эта спецификация сохраняет семантику запроса. Например, если запрос содержит указание NOLOCK
таблицы, OPTION
предложение в параметре @hints руководства плана также должно содержать NOLOCK
указание. См . пример K.
Указание подсказок с указанием хранилища запросов
Вы можете применять подсказки к запросам, определяемых с помощью хранилища запросов, не изменяя код, с помощью функции подсказок хранилища запросов . Используйте хранимую процедуру sys.sp_query_store_set_hints для применения указания к запросу. См. пример N.
Поддержка подсказки запросов в хранилище данных Fabric
Хранилище данных Microsoft Fabric поддерживает подмножество подсказок запросов:
HASH GROUP
ORDER GROUP
MERGE UNION
HASH UNION
CONCAT UNION
FORCE ORDER
USE HINT
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES
ASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
ASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATES
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS
Эти указания запросов являются эксклюзивными для хранилища данных Microsoft Fabric:
-
FORCE SINGLE NODE PLAN
, ,FORCE DISTRIBUTED PLAN
DISABLE_RESULT_SET_CACHE
Примеры
А. Использование MERGE JOIN
В следующем примере указывается, что MERGE JOIN
выполняется JOIN
операция в запросе. В примере используется AdventureWorks2022
база данных.
SELECT *
FROM Sales.Customer AS c
INNER JOIN Sales.CustomerAddress AS ca ON c.CustomerID = ca.CustomerID
WHERE TerritoryID = 5
OPTION (MERGE JOIN);
GO
В. Использование OPTIMIZE FOR
В следующем примере оптимизатор запросов указывает оптимизатору запросов использовать значение 'Seattle'
и @city_name
использовать среднюю селекторность предиката во всех значениях @postal_code
столбцов при оптимизации запроса. В примере используется AdventureWorks2022
база данных.
CREATE PROCEDURE dbo.RetrievePersonAddress
@city_name NVARCHAR(30),
@postal_code NVARCHAR(15)
AS
SELECT * FROM Person.Address
WHERE City = @city_name AND PostalCode = @postal_code
OPTION ( OPTIMIZE FOR (@city_name = 'Seattle', @postal_code UNKNOWN) );
GO
С. Использование MAXRECURSION
MAXRECURSION
можно использовать для предотвращения плохо сформированного рекурсивного общего табличного выражения в бесконечном цикле. В следующем примере намеренно создается бесконечный цикл и используется MAXRECURSION
указание для ограничения количества уровней рекурсии до двух. В примере используется AdventureWorks2022
база данных.
--Creates an infinite loop
WITH cte (CustomerID, PersonID, StoreID) AS
(
SELECT CustomerID, PersonID, StoreID
FROM Sales.Customer
WHERE PersonID IS NOT NULL
UNION ALL
SELECT cte.CustomerID, cte.PersonID, cte.StoreID
FROM cte
JOIN Sales.Customer AS e
ON cte.PersonID = e.CustomerID
)
--Uses MAXRECURSION to limit the recursive levels to 2
SELECT CustomerID, PersonID, StoreID
FROM cte
OPTION (MAXRECURSION 2);
GO
После исправления MAXRECURSION
ошибки кодирования больше не требуется.
Д. Использование MERGE UNION
В следующем примере используется MERGE UNION
указание запроса. В примере используется AdventureWorks2022
база данных.
SELECT *
FROM HumanResources.Employee AS e1
UNION
SELECT *
FROM HumanResources.Employee AS e2
OPTION (MERGE UNION);
GO
Е. Использование HASH GROUP и FAST
В следующем примере используются HASH GROUP
подсказки и FAST
указания запросов. В примере используется AdventureWorks2022
база данных.
SELECT ProductID, OrderQty, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
GROUP BY ProductID, OrderQty
ORDER BY ProductID, OrderQty
OPTION (HASH GROUP, FAST 10);
GO
F. Использование MAXDOP
В следующем примере используется MAXDOP
указание запроса. В примере используется AdventureWorks2022
база данных.
SELECT ProductID, OrderQty, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
GROUP BY ProductID, OrderQty
ORDER BY ProductID, OrderQty
OPTION (MAXDOP 2);
GO
G. Использование INDEX
В следующих примерах используется INDEX
указание. Первый пример задает один индекс. Второй пример задает несколько индексов для одной ссылки на таблицу. В обоих примерах, так как вы применяете INDEX
указание к таблице, использующую псевдоним, TABLE HINT
предложение также должно указывать тот же псевдоним, что и имя предоставленного объекта. В примере используется AdventureWorks2022
база данных.
EXEC sp_create_plan_guide
@name = N'Guide1',
@stmt = N'SELECT c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID = 2;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT(e, INDEX (IX_Employee_ManagerID)))';
GO
EXEC sp_create_plan_guide
@name = N'Guide2',
@stmt = N'SELECT c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID = 2;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT(e, INDEX(PK_Employee_EmployeeID, IX_Employee_ManagerID)))';
GO
H. Использование FORCESEEK
В следующем примере используется FORCESEEK
указание таблицы. Предложение TABLE HINT
должно также указать одно и то же имя двух частей, что и имя предоставленного объекта. Укажите имя при применении INDEX
подсказки к таблице, которая использует имя двух частей. В примере используется AdventureWorks2022
база данных.
EXEC sp_create_plan_guide
@name = N'Guide3',
@stmt = N'SELECT c.LastName, c.FirstName, HumanResources.Employee.Title
FROM HumanResources.Employee
JOIN Person.Contact AS c ON HumanResources.Employee.ContactID = c.ContactID
WHERE HumanResources.Employee.ManagerID = 3
ORDER BY c.LastName, c.FirstName;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT( HumanResources.Employee, FORCESEEK))';
GO
И. Использование нескольких подсказок таблицы
В следующем примере подсказка INDEX
применяется к одной таблице и подсказке FORCESEEK
к другой. В примере используется AdventureWorks2022
база данных.
EXEC sp_create_plan_guide
@name = N'Guide4',
@stmt = N'SELECT e.ManagerID, c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID = 3;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT (e, INDEX( IX_Employee_ManagerID))
, TABLE HINT (c, FORCESEEK))';
GO
J. Использование TABLE HINT для переопределения существующего указания таблицы
В следующем примере показано, как использовать подсказку TABLE HINT
. Указание можно использовать без указания указания для переопределения INDEX
поведения указания таблицы, указанного в FROM
предложении запроса. В примере используется AdventureWorks2022
база данных.
EXEC sp_create_plan_guide
@name = N'Guide5',
@stmt = N'SELECT e.ManagerID, c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e WITH (INDEX (IX_Employee_ManagerID))
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID = 3;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT(e))';
GO
K. Указание подсказок таблицы семантики, влияющих на семантику
В следующем примере содержатся два указания таблицы в запросе: NOLOCK
который влияет на семантику и INDEX
не семантику влияет. Чтобы сохранить семантику запроса, NOLOCK
указание указывается в OPTIONS
предложении руководства по плану. Наряду с NOLOCK
указанием укажите и INDEX
намеки FORCESEEK
и замените неемантические подсказки INDEX
в запросе во время компиляции и оптимизации инструкций. В примере используется AdventureWorks2022
база данных.
EXEC sp_create_plan_guide
@name = N'Guide6',
@stmt = N'SELECT c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e
WITH (NOLOCK, INDEX (PK_Employee_EmployeeID))
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID = 3;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT (e, INDEX(IX_Employee_ManagerID), NOLOCK, FORCESEEK))';
GO
В следующем примере показан альтернативный метод сохранения семантики запроса и разрешения оптимизатору выбрать индекс, отличный от индекса, указанного в подсказке таблицы. Разрешить оптимизатору выбрать, указав NOLOCK
указание в предложении OPTIONS
. Укажите указание, так как оно влияет на семантику. Затем укажите ключевое TABLE HINT
слово только со ссылкой на таблицу и без INDEX
указания. В примере используется AdventureWorks2022
база данных.
EXEC sp_create_plan_guide
@name = N'Guide7',
@stmt = N'SELECT c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e
WITH (NOLOCK, INDEX (PK_Employee_EmployeeID))
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID = 2;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (TABLE HINT (e, NOLOCK))';
GO
L. Использование ПОДСКАЗКИ USE
В следующем примере используются RECOMPILE
подсказки и USE HINT
указания запросов. В примере используется AdventureWorks2022
база данных.
SELECT * FROM Person.Address
WHERE City = 'SEATTLE' AND PostalCode = 98104
OPTION (RECOMPILE, USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES', 'DISABLE_PARAMETER_SNIFFING'));
GO
М. Использование ЗАПРОСАTRACEON HINT
В следующем примере используются QUERYTRACEON
подсказки запроса. В примере используется AdventureWorks2022
база данных. Вы можете включить все исправления, влияющие на план, контролируемые флагом трассировки 4199 для конкретного запроса, с помощью следующего запроса:
SELECT * FROM Person.Address
WHERE City = 'SEATTLE' AND PostalCode = 98104
OPTION (QUERYTRACEON 4199);
Можно также использовать несколько флагов трассировки, как показано в следующем запросе:
SELECT * FROM Person.Address
WHERE City = 'SEATTLE' AND PostalCode = 98104
OPTION (QUERYTRACEON 4199, QUERYTRACEON 4137);
N. Использование подсказок хранилища запросов
Функция подсказок хранилища запросов предоставляет удобный метод для формирования планов запросов без изменения кода приложения.
Сначала определите запрос, который уже был выполнен в представлениях каталога хранилища запросов, например:
SELECT q.query_id, qt.query_sql_text
FROM sys.query_store_query_text qt
INNER JOIN sys.query_store_query q ON
qt.query_text_id = q.query_text_id
WHERE query_sql_text like N'%ORDER BY ListingPrice DESC%'
AND query_sql_text not like N'%query_store%';
GO
В следующем примере применяется указание для принудительного определения кратности прежних версий query_id 39, определенных в хранилище запросов:
EXEC sys.sp_query_store_set_hints @query_id = 39, @query_hints = N'OPTION (USE HINT (''FORCE_LEGACY_CARDINALITY_ESTIMATION''))';
В следующем примере применяется указание для принудительного применения максимального размера предоставления памяти в PERCENT
настроенном ограничении памяти до query_id
39, определенных в хранилище запросов:
EXEC sys.sp_query_store_set_hints @query_id = 39, @query_hints = N'OPTION (MAX_GRANT_PERCENT = 10)';
В следующем примере применяется несколько подсказок запросов к query_id 39, включая RECOMPILE
, MAXDOP 1
а также поведение оптимизатора запросов SQL Server 2012 (11.x):
EXEC sys.sp_query_store_set_hints @query_id = 39,
@query_hints = N'OPTION(RECOMPILE, MAXDOP 1, USE HINT (''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_110''))';
В следующем примере запрос блокируется с помощью query_id 39 из последующего выполнения, применяя подсказку ABORT_QUERY_EXECUTION
. Указание находится в предварительной версии.
EXEC sys.sp_query_store_set_hints @query_id = 39,
@query_hints = N'OPTION (USE HINT (''ABORT_QUERY_EXECUTION''))';
O. Запрос данных в момент времени
Область применения: хранилище в Microsoft Fabric
TIMESTAMP
Используйте синтаксис в OPTION
предложении, чтобы запросить данные, которые существовали в прошлом, в Хранилище данных Synapse в Microsoft Fabric. Следующий пример запроса возвращает данные, как он появился 13 марта 2024 г. в 7:39:35.28 ВЕЧЕРА UTC. Часовой пояс всегда находится в формате UTC.
SELECT OrderDateKey, SUM(SalesAmount) AS TotalSales
FROM FactInternetSales
GROUP BY OrderDateKey
ORDER BY OrderDateKey
OPTION (FOR TIMESTAMP AS OF '2024-03-13T19:39:35.28');--March 13, 2024 at 7:39:35.28 PM UTC
P. Принудительное выполнение запроса одного узла или распределенного запроса
Область применения: хранилище в Microsoft Fabric
Чтобы принудительно выполнить запрос в хранилище данных Fabric для использования одного узла, используйте force [ SINGLE NODE | УКАЗАНИЕ DISTRIBUTED ] PLAN .
SELECT OrderDateKey, SalesAmount
FROM FactInternetSales
OPTION (FORCE SINGLE NODE PLAN);
Чтобы принудительно выполнить запрос в хранилище данных Fabric для использования распределенного запроса:
SELECT OrderDateKey, SalesAmount
FROM FactInternetSales
OPTION (FORCE DISTRIBUTED PLAN);
Вопрос: Отключение запроса от создания или применения кэша результирующих наборов (предварительная версия)
Область применения: Microsoft Fabric
Используйте 'DISABLE_RESULT_SET_CACHE'
в качестве hint_name
блока кэша результирующих наборов для определенного выполнения запроса. Дополнительные сведения см. в разделе "Кэширование результирующих наборов".
SELECT OrderDateKey, SUM(SalesAmount) AS TotalSales
FROM FactInternetSales
GROUP BY OrderDateKey
ORDER BY OrderDateKey
OPTION (USE HINT ('DISABLE_RESULT_SET_CACHE'));