Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Depósito no Microsoft Fabric
Banco de dados SQL no Microsoft Fabric
Especifica que a dica de consulta indicada deve ser usada em toda a consulta. Cada dica de consulta pode ser especificada apenas uma vez, embora sejam permitidas várias dicas de consulta. Apenas uma cláusula OPTION pode ser especificada com a instrução.
Essa cláusula pode ser especificada nas instruções SELECT, DELETE, UPDATE e MERGE.
Convenções de sintaxe de Transact-SQL
Syntax
Sintaxe para SQL Server, Instância Gerenciada de SQL do Azure e Banco de Dados SQL do Azure:
[ OPTION ( <query_hint> [ , ...n ] ) ]
Sintaxe para Warehouse no 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>'
Sintaxe para o Azure Synapse Analytics e o PDW (Analytics Platform System) e o ponto de extremidade de análise do SQL no 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
Sintaxe para pool de SQL sem servidor no Azure Synapse Analytics:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name
Arguments
query_hint
Palavras-chave que indicam as dicas de otimização são usadas para personalizar a forma como o Mecanismo de Banco de Dados processa a instrução. Para saber mais, confira Dicas de consulta.
Examples
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
A. Usar uma cláusula OPTION com uma cláusula GROUP BY
O exemplo a seguir mostra como a cláusula OPTION é usada com uma cláusula 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
Exemplos: Azure Synapse Analytics e Analytics Platform System (PDW)
B. Instrução SELECT com um rótulo na cláusula OPTION
O exemplo a seguir mostra uma SELECT afirmação com um rótulo na OPTION cláusula.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
C. Instrução SELECT com uma dica de consulta na cláusula OPTION
O exemplo a seguir mostra uma SELECT instrução que usa uma HASH JOIN dica de consulta na OPTION cláusula.
-- Uses AdventureWorks
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
D. Instrução SELECT com um rótulo e várias dicas de consulta na cláusula OPTION
O exemplo a seguir é uma instrução do Azure Synapse Analytics SELECT que contém um rótulo e várias dicas de consulta. Quando a consulta é executada nos nós de computação, o SQL Server aplica uma junção de hash ou junção de mesclagem, de acordo com a estratégia que o SQL Server decide ser a mais ideal.
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (Label = 'CustJoin', HASH JOIN, MERGE JOIN);
E. Usar uma dica de consulta durante a consulta de uma exibição
O exemplo a seguir cria uma exibição chamada CustomerView e, em seguida, usa uma dica de HASH JOIN consulta em uma consulta que faz referência a uma exibição e a uma tabela.
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. Consultar com uma subseleção e dica de consulta
O exemplo a seguir mostra uma consulta que contém uma subseleção e uma dica de consulta. A dica de consulta é aplicada globalmente. As dicas de consulta não podem ser acrescentadas à instrução 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. Forçar a ordem de junção para que ela corresponda à ordem na consulta
O exemplo a seguir usa a FORCE ORDER dica para forçar o plano de consulta a usar a ordem de junção especificada pela consulta. Essa dica melhora o desempenho em algumas consultas, mas não em todas.
Essa consulta obtém números de partição, valores de limite, tipos de valor de limite e linhas por limite para as partições na ProspectiveBuyer tabela do banco de ssawPDW dados.
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. Usar EXTERNALPUSHDOWN
O exemplo a seguir força o WHERE pushdown da cláusula para a tarefa MapReduce na tabela externa do Hadoop.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
O exemplo a seguir impede a aplicação da WHERE cláusula para a tarefa MapReduce na tabela externa do Hadoop. Todas as linhas são retornadas ao PDW onde a WHERE cláusula é aplicada.
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
Exemplos: Microsoft Fabric Data Warehouse
I. Consultar dados em um ponto no tempo
Para obter mais informações, confira a dica de consulta FOR TIMESTAMP.
Use a TIMESTAMP sintaxe na OPTION cláusula para consultar dados como eles existiam no passado, no Fabric Data Warehouse. A consulta de amostra a seguir retorna dados como apareciam em 13 de março de 2024 às 19h39min35,28s UTC. O fuso horário é sempre em 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. Instrução SELECT com um rótulo na cláusula OPTION
O exemplo a seguir mostra uma SELECT afirmação com um rótulo na OPTION cláusula. Para mais informações, veja Consultar etiquetas no Fabric Data Warehouse.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');