Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Azt határozza meg, hogy a megadott lekérdezési tippet a teljes lekérdezésben használni kell. Minden lekérdezési tipp csak egyszer adható meg, bár több lekérdezési tipp is engedélyezett. Az utasítással csak egy OPTION záradék adható meg.
Ez a záradék a , SELECT, DELETEés UPDATE utasításokban MERGEadható meg.
Transact-SQL szintaxis konvenciók
Syntax
Szintaxis az SQL Serverhez, a felügyelt Azure SQL-példányhoz és az Azure SQL Database-hez:
[ OPTION ( <query_hint> [ , ...n ] ) ]
A Microsoft Fabric Warehouse szintaxisa:
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>'
Az Azure Synapse Analytics and Analytics Platform System (PDW) és az SQL Analytics-végpont szintaxisa a Microsoft Fabricben:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name |
<query_hint>
<query_hint> ::=
HASH JOIN
| LOOP JOIN
| MERGE JOIN
| FORCE ORDER
| { FORCE | DISABLE } EXTERNALPUSHDOWN
Az Azure Synapse Analytics kiszolgáló nélküli SQL-készletének szintaxisa:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name
Arguments
query_hint
Kulcsszavak, amelyek jelzik, hogy mely optimalizáló tippeket használják az adatbázismotor által az utasítás folyamatának testreszabásához. További információ: Lekérdezési tippek.
Examples
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
A. OPTION záradék használata GROUP BY záradékkal
Az alábbi példa bemutatja, hogyan használja a OPTION záradékot egy GROUP BY záradékkal.
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
Példák: Azure Synapse Analytics és Analytics Platform System (PDW)
B. SELECT utasítás címkével az OPTION záradékban
A következő példa egy SELECT kijelentést mutat, amelynek címke van a OPTION klauzulában.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
C. SELECT utasítás lekérdezési tipptel az OPTION záradékban
Az alábbi példa egy olyan utasítást SELECT mutat be, amely lekérdezési tippet HASH JOIN használ a OPTION záradékban.
-- Uses AdventureWorks
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
D. SELECT utasítás címkével és több lekérdezési tipptel az OPTION záradékban
Az alábbi példa egy Azure Synapse Analytics-utasítás SELECT , amely egy címkét és több lekérdezési tippet tartalmaz. Amikor a lekérdezés a számítási csomópontokon fut, az SQL Server kivonat-illesztés vagy egyesítési illesztés alkalmazását alkalmazza az SQL Server által elhatározott stratégia szerint a legoptimálisabb.
SELECT COUNT(*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (Label = 'CustJoin', HASH JOIN, MERGE JOIN);
E. Lekérdezési tipp használata nézet lekérdezéséhez
Az alábbi példa létrehoz egy CustomerView nevű nézetet, majd egy HASH JOIN lekérdezési tippet használ egy nézetre és egy táblára hivatkozó lekérdezésben.
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. Lekérdezés egy alválasztással és egy lekérdezési tipptel
Az alábbi példa egy olyan lekérdezést mutat be, amely egy alválasztást és egy lekérdezési tippet is tartalmaz. A lekérdezési tipp globálisan lesz alkalmazva. A lekérdezési tippek nem fűzhetők hozzá az alkijelölési utasításhoz.
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. Az illesztés sorrendjének kényszerítése a lekérdezésben szereplő sorrendnek való megfeleltetésére
Az alábbi példa a FORCE ORDER tipp használatával kényszeríti a lekérdezéstervet a lekérdezés által megadott illesztés sorrendjének használatára. Ez a tipp néhány lekérdezés teljesítményét javítja, de nem minden lekérdezést.
Ez a lekérdezés a partíciószámokat, a határértékeket, a határértéktípusokat és a határonkénti sorokat szerzi be az ProspectiveBuyerssawPDW adatbázis táblájában lévő partíciókhoz.
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. AZ EXTERNALPUSHDOWN használata
Az alábbi példa a záradék leküldését WHERE a külső Hadoop-tábla MapReduce feladatára kényszeríti.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
Az alábbi példa megakadályozza a záradék leküldését WHERE a Külső Hadoop-tábla MapReduce-feladatához. A rendszer az összes sort visszaadja a PDW-nek, ahol a WHERE záradékot alkalmazza.
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
Példák: Microsoft Fabric Data Warehouse
I. Adatok lekérdezése időponttól
További információ: FOR TIMESTAMP query hint.
TIMESTAMP A záradék szintaxisával lekérdezheti az OPTION adatokat a múltban, a Fabric Data Warehouse-ban. Az alábbi minta lekérdezés a 2024. március 13-án 19:39:35.28-kor (UTC) megjelenő adatokat adja vissza. Az időzóna mindig UTC-ben van.
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 utasítás címkével az OPTION záradékban
A következő példa egy SELECT kijelentést mutat, amelynek címke van a OPTION klauzulában. További információért lásd: Lekérdezési címkék a Fabric Data Warehouse területén.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');