Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Określa, że wskazana wskazówka zapytania powinna być używana w całym zapytaniu. Każda wskazówka zapytania może być określona tylko raz, chociaż dozwolone jest wiele wskazówek dotyczących zapytań. Za pomocą instrukcji można określić tylko jedną OPTION klauzulę.
Tę klauzulę można określić w instrukcjach SELECT, DELETE, UPDATEi MERGE .
Transact-SQL konwencje składni
Syntax
Składnia dla programu SQL Server, usługi Azure SQL Managed Instance i usługi Azure SQL Database:
[ OPTION ( <query_hint> [ , ...n ] ) ]
Składnia magazynu w usłudze 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>'
Składnia dla usługi Azure Synapse Analytics and Analytics Platform System (PDW) i punktu końcowego analizy SQL w usłudze 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
Składnia bezserwerowej puli SQL w usłudze Azure Synapse Analytics:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name
Arguments
query_hint
Słowa kluczowe wskazujące, które wskazówki optymalizatora są używane do dostosowywania sposobu przetwarzania instrukcji przez aparat bazy danych. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące zapytań.
Examples
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
A. Używanie klauzuli OPTION z klauzulą GROUP BY
W poniższym przykładzie pokazano, jak klauzula OPTION jest używana z klauzulą 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
Przykłady: Azure Synapse Analytics i Analytics Platform System (PDW)
B. Instrukcja SELECT z etykietą w klauzuli OPTION
Poniższy przykład pokazuje SELECT zdanie z etykietą w klauzuli OPTION .
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
C. Instrukcja SELECT z wskazówką zapytania w klauzuli OPTION
W poniższym przykładzie pokazano instrukcję SELECT , która używa HASH JOIN wskazówki dotyczącej zapytania w klauzuli OPTION .
-- Uses AdventureWorks
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
D. Instrukcja SELECT z etykietą i wieloma wskazówkami zapytania w klauzuli OPTION
Poniższy przykład to instrukcja usługi Azure Synapse Analytics SELECT zawierająca etykietę i wiele wskazówek dotyczących zapytań. Gdy zapytanie jest uruchamiane w węzłach obliczeniowych, program SQL Server stosuje sprzężenie skrótu lub sprzężenie scalania, zgodnie ze strategią, którą decyduje program SQL Server, jest najbardziej optymalny.
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (Label = 'CustJoin', HASH JOIN, MERGE JOIN);
E. Używanie wskazówki dotyczącej zapytania podczas wykonywania zapytań w widoku
Poniższy przykład tworzy widok o nazwie CustomerView, a następnie używa HASH JOIN wskazówki zapytania w zapytaniu odwołującym się do widoku i tabeli.
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. Zapytanie z podwybierzem i wskazówką zapytania
W poniższym przykładzie pokazano zapytanie zawierające zarówno podwybierz, jak i wskazówkę zapytania. Wskazówka dotycząca zapytania jest stosowana globalnie. Nie można dołączyć wskazówek dotyczących zapytań do instrukcji 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. Wymuś kolejność sprzężenia, aby dopasować kolejność w zapytaniu
W poniższym przykładzie użyto FORCE ORDER wskazówki, aby wymusić użycie planu zapytania w celu użycia kolejności sprzężenia określonej przez zapytanie. Ta wskazówka zwiększa wydajność niektórych zapytań, ale nie wszystkich zapytań.
To zapytanie uzyskuje numery partycji, wartości granic, typy wartości granic i wiersze na granicę dla partycji w ProspectiveBuyer tabeli ssawPDW bazy danych.
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. Korzystanie z elementu EXTERNALPUSHDOWN
Poniższy przykład wymusza wypychanie klauzuli WHERE do zadania MapReduce w zewnętrznej tabeli hadoop.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
Poniższy przykład uniemożliwia wypchnięcie klauzuli WHERE do zadania MapReduce w zewnętrznej tabeli hadoop. Wszystkie wiersze są zwracane do pliku PDW, w którym jest stosowana klauzula WHERE .
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
Przykłady: Microsoft Fabric Data Warehouse
I. Wykonywanie zapytań o dane w określonym punkcie w czasie
Aby uzyskać więcej informacji, zobacz FOR TIMESTAMP query hint (Wskazówki dotyczące zapytania TIMESTAMP).
Składnia TIMESTAMP w klauzuli umożliwia OPTION wykonywanie zapytań o dane w przeszłości w magazynie danych sieci szkieletowej. Następujące przykładowe zapytanie zwraca dane, które pojawiły się 13 marca 2024 r. o 19:39:35.28 UTC. Strefa czasowa jest zawsze w formacie 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. Instrukcja SELECT z etykietą w klauzuli OPTION
Poniższy przykład pokazuje SELECT zdanie z etykietą w klauzuli OPTION . Więcej informacji można znaleźć w artykule Query labels in Fabric Data Warehouse.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
Treści powiązane
- wskazówki dotyczące zapytań (Transact-SQL)
- WYBIERZ (Transact-SQL)
- AKTUALIZACJA (Transact-SQL)
- MERGE (Transact-SQL)
- USUŃ (Transact-SQL)