Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Hiermee geeft u op dat de aangegeven queryhint moet worden gebruikt in de hele query. Elke queryhint kan slechts één keer worden opgegeven, hoewel meerdere queryhints zijn toegestaan. Er kan slechts één OPTION component worden opgegeven met de instructie.
Deze component kan worden opgegeven in de SELECTinstructies en DELETEUPDATEMERGE instructies.
Transact-SQL syntaxis-conventies
Syntax
Syntaxis voor SQL Server, Azure SQL Managed Instance en Azure SQL Database:
[ OPTION ( <query_hint> [ , ...n ] ) ]
Syntaxis voor warehouse in 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>'
Syntaxis voor Azure Synapse Analytics and Analytics Platform System (PDW) en SQL Analytics-eindpunt in 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
Syntaxis voor een serverloze SQL-pool in Azure Synapse Analytics:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name
Arguments
query_hint
Trefwoorden die aangeven welke optimizer-hints worden gebruikt om de manier aan te passen waarop de database-engine de instructie verwerkt. Zie queryhintsvoor meer informatie.
Examples
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .
A. Een OPTION-component gebruiken met een GROUP BY-component
In het volgende voorbeeld ziet u hoe de OPTION component wordt gebruikt met een GROUP BY component.
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
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
B. SELECT-instructie met een label in de OPTION-component
In het volgende voorbeeld ziet u een Azure Synapse Analytics-instructie SELECT met een label in de OPTION component.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
C. SELECT-instructie met een queryhint in de OPTION-component
In het volgende voorbeeld ziet u een SELECT instructie die gebruikmaakt van een HASH JOIN queryhint in de OPTION component.
-- Uses AdventureWorks
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
D. SELECT-instructie met een label en meerdere queryhints in de OPTION-component
Het volgende voorbeeld is een Azure Synapse Analytics-instructie SELECT die een label en meerdere queryhints bevat. Wanneer de query wordt uitgevoerd op de rekenknooppunten, past SQL Server een hash-join of samenvoeging toe op basis van de strategie die SQL Server besluit, is de meest optimale.
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (Label = 'CustJoin', HASH JOIN, MERGE JOIN);
E. Een queryhint gebruiken bij het uitvoeren van query's op een weergave
In het volgende voorbeeld wordt een weergave met de naam CustomerView gemaakt en wordt vervolgens een HASH JOIN queryhint gebruikt in een query die verwijst naar een weergave en een tabel.
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. Query's uitvoeren met een subselectie en een queryhint
In het volgende voorbeeld ziet u een query die zowel een subselectie als een queryhint bevat. De queryhint wordt globaal toegepast. Queryhints kunnen niet worden toegevoegd aan de subselectie-instructie.
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. De joinvolgorde afdwingen zodat deze overeenkomt met de volgorde in de query
In het volgende voorbeeld wordt de FORCE ORDER hint gebruikt om het queryplan af te dwingen de joinvolgorde te gebruiken die is opgegeven door de query. Deze hint verbetert de prestaties van sommige query's, maar niet alle query's.
Met deze query worden partitienummers, grenswaarden, grenswaardetypen en rijen per grens opgehaald voor de partities in de ProspectiveBuyer tabel van de ssawPDW database.
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 gebruiken
In het volgende voorbeeld wordt de pushdown van de WHERE component naar de MapReduce-taak in de externe Hadoop-tabel gedwongen.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
In het volgende voorbeeld wordt voorkomen dat de WHERE component naar de MapReduce-taak in de externe Hadoop-tabel wordt gepusht. Alle rijen worden geretourneerd naar PDW waar de WHERE component wordt toegepast.
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
I. Gegevens opvragen vanaf een bepaald tijdstip
van toepassing op: Warehouse in Microsoft Fabric
Zie FOR TIMESTAMP-queryhint voor meer informatie.
Gebruik de TIMESTAMP syntaxis in de OPTION component om gegevens op te vragen zoals deze in het verleden bestonden, in Fabric Data Warehouse. De volgende voorbeeldquery retourneert gegevens zoals weergegeven op 13 maart 2024 om 17:39:35.28 UUR UTC. De tijdzone bevindt zich altijd in 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
Verwante inhoud
- queryhints (Transact-SQL)
- SELECT (Transact-SQL)
- UPDATE (Transact-SQL)
- SAMENVOEGEN (Transact-SQL)
- DELETE (Transact-SQL)