Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Указывает, что показанное указание запроса должно быть использовано во всем запросе. Каждое указание запроса может быть задано только один раз, однако разрешены множественные указания запроса. С помощью инструкции можно указать только одно OPTION предложение.
Это предложение можно указать в SELECTинструкциях , DELETEUPDATEи MERGE инструкциях.
Соглашения о синтаксисе Transact-SQL
Syntax
Синтаксис SQL Server, Управляемый экземпляр SQL Azure и База данных SQL Azure:
[ OPTION ( <query_hint> [ , ...n ] ) ]
Синтаксис для хранилища в Microsoft Fabric:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name |
<query_hint>
<query_hint> ::=
HASH JOIN
| LOOP JOIN
| MERGE JOIN
| FORCE ORDER
| { FORCE | DISABLE } EXTERNALPUSHDOWN
| FOR TIMESTAMP AS OF '<point_in_time>'
Синтаксис для azure Synapse Analytics и платформы аналитики (PDW) и конечной точки аналитики SQL в Microsoft Fabric:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name |
<query_hint>
<query_hint> ::=
HASH JOIN
| LOOP JOIN
| MERGE JOIN
| FORCE ORDER
| { FORCE | DISABLE } EXTERNALPUSHDOWN
Синтаксис бессерверного пула SQL в Azure Synapse Analytics:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name
Arguments
query_hint
Ключевые слова, которые указывают, какие указания оптимизатора применяются при настройке способа обработки инструкции ядром СУБД. Дополнительные сведения см. в разделе Указания запросов.
Examples
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
A. Использование предложения OPTION с предложением GROUP BY
В следующем примере демонстрируется совместное использование предложений OPTION и GROUP BY.
USE AdventureWorks2022;
GO
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
Примеры: Azure Synapse Analytics и Analytics Platform System (PDW)
B. Инструкция SELECT с меткой в предложении OPTION
Следующий пример показывает SELECT оператор с меткой в OPTION клаузе.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
C. Инструкция SELECT с указанием запроса в предложении OPTION
В следующем примере показана SELECT инструкция, использующая подсказку HASH JOIN запроса в предложении OPTION .
-- Uses AdventureWorks
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
D. Инструкция SELECT с меткой и несколькими указаниями запроса в предложении OPTION
В следующем примере приведена инструкция Azure Synapse Analytics SELECT , содержащая метку и несколько подсказок запросов. При выполнении запроса на вычислительных узлах SQL Server применяет хэш-соединение или соединение слиянием в соответствии с стратегией, которую SQL Server решает наиболее оптимальным.
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (Label = 'CustJoin', HASH JOIN, MERGE JOIN);
E. Использование подсказки запроса при запросе представления
В следующем примере создается представление с именем CustomerView, а затем используется указание запроса в запросе, который ссылается HASH JOIN на представление и таблицу.
CREATE VIEW CustomerView
AS
SELECT CustomerKey,
FirstName,
LastName
FROM ssawPDW..DimCustomer;
GO
SELECT COUNT(*)
FROM dbo.CustomerView a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
GO
DROP VIEW CustomerView;
GO
F. Запрос с подвыборкой и указанием запроса
В приведенном ниже примере показан запрос, который содержит как подвыборку, так и указание запроса. Указание запроса применяется глобально. Подсказки запросов не могут быть добавлены в инструкцию subselect.
CREATE VIEW CustomerView
AS
SELECT CustomerKey,
FirstName,
LastName
FROM ssawPDW..DimCustomer;
GO
SELECT *
FROM (
SELECT COUNT(*) AS a
FROM dbo.CustomerView a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
) AS t
OPTION (HASH JOIN);
G. Принудительное соответствие порядка соединения порядку в запросе
В следующем примере используется FORCE ORDER указание, чтобы заставить план запроса использовать порядок соединения, указанный запросом. Это указание повышает производительность некоторых запросов, но не всех запросов.
Этот запрос получает номера секций, значения границ, типы значений границ и строки для секций ProspectiveBuyer в ssawPDW таблице базы данных.
SELECT sp.partition_number,
prv.value AS boundary_value,
lower(sty.name) AS boundary_value_type,
sp.rows
FROM sys.tables st
INNER JOIN sys.indexes si
ON st.object_id = si.object_id AND si.index_id < 2
INNER JOIN sys.partitions sp
ON sp.object_id = st.object_id AND sp.index_id = si.index_id
INNER JOIN sys.partition_schemes ps
ON ps.data_space_id = si.data_space_id
INNER JOIN sys.partition_range_values prv
ON prv.function_id = ps.function_id
INNER JOIN sys.partition_parameters pp
ON pp.function_id = ps.function_id
INNER JOIN sys.types sty
ON sty.user_type_id = pp.user_type_id AND prv.boundary_id = sp.partition_number
WHERE st.object_id = (
SELECT object_id
FROM sys.objects
WHERE name = 'FactResellerSales'
)
ORDER BY sp.partition_number
OPTION (FORCE ORDER);
H. Использование EXTERNALPUSHDOWN
В следующем примере принудительное включение WHERE предложения к заданию MapReduce во внешней таблице Hadoop.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
В следующем примере не допускается отправка WHERE предложения заданию MapReduce во внешней таблице Hadoop. Все строки возвращаются в PDW, где WHERE применяется предложение.
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
Примеры: Microsoft Fabric Data Warehouse
I. Запрос данных в момент времени
Дополнительные сведения см . в подсказке запроса FOR TIMESTAMP.
TIMESTAMP Используйте синтаксис в OPTION предложении для запроса данных, как он существовал в прошлом, в хранилище данных 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
J. Инструкция SELECT с меткой в предложении OPTION
Следующий пример показывает SELECT оператор с меткой в OPTION клаузе. Для получения дополнительной информации см. раздел «Метки запросов в хранилище данных фабрики».
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');