Klausul OPTION (Transact-SQL)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric
Menentukan bahwa petunjuk kueri yang ditunjukkan harus digunakan di seluruh kueri. Setiap petunjuk kueri hanya dapat ditentukan satu kali, meskipun beberapa petunjuk kueri diizinkan. Hanya satu klausa OPTION yang dapat ditentukan dengan pernyataan .
Klausa ini dapat ditentukan dalam pernyataan SELECT, DELETE, UPDATE, dan MERGE.
Sintaks
Sintaks untuk SQL Server dan Azure SQL Database
[ OPTION ( <query_hint> [ ,...n ] ) ]
Sintaks untuk Azure Synapse Analytics dan Analytics Platform System (PDW)
OPTION ( <query_option> [ ,...n ] )
<query_option> ::=
LABEL = label_name |
<query_hint>
<query_hint> ::=
HASH JOIN
| LOOP JOIN
| MERGE JOIN
| FORCE ORDER
| { FORCE | DISABLE } EXTERNALPUSHDOWN
Sintaks untuk kumpulan SQL tanpa server di Azure Synapse Analytics
OPTION ( <query_option> [ ,...n ] )
<query_option> ::=
LABEL = label_name
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
query_hint
Kata kunci yang menunjukkan petunjuk pengoptimal mana yang digunakan untuk menyesuaikan cara Mesin Database memproses pernyataan. Untuk informasi selengkapnya, lihat Petunjuk Kueri (Transact-SQL).
Contoh
J. Menggunakan klausa OPTION dengan klausa GROUP BY
Contoh berikut menunjukkan bagaimana OPTION
klausa digunakan dengan GROUP BY
klausa.
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
Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)
B. Pernyataan SELECT dengan label dalam klausa OPTION
Contoh berikut menunjukkan pernyataan Select Azure Synapse Analytics dengan label dalam klausa OPTION.
-- Uses AdventureWorks
SELECT * FROM FactResellerSales
OPTION ( LABEL = 'q17' );
C. Pernyataan SELECT dengan petunjuk kueri dalam klausa OPTION
Contoh berikut menunjukkan pernyataan SELECT yang menggunakan petunjuk kueri HASH JOIN dalam klausa OPTION.
-- Uses AdventureWorks
SELECT COUNT (*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION (HASH JOIN);
D. Pernyataan SELECT dengan label dan beberapa petunjuk kueri dalam klausa OPTION
Contoh berikut adalah pernyataan Select Azure Synapse Analytics yang berisi label dan beberapa petunjuk kueri. Ketika kueri dijalankan pada simpul Komputasi, SQL Server akan menerapkan gabungan hash atau gabungan gabungan, sesuai dengan strategi yang diputuskan SQL Server adalah yang paling optimal.
-- Uses AdventureWorks
SELECT COUNT (*) FROM dbo.DimCustomer a
INNER JOIN dbo.FactInternetSales b
ON (a.CustomerKey = b.CustomerKey)
OPTION ( Label = 'CustJoin', HASH JOIN, MERGE JOIN);
E. Menggunakan petunjuk kueri saat mengkueri tampilan
Contoh berikut membuat tampilan bernama CustomerView lalu menggunakan petunjuk kueri HASH JOIN dalam kueri yang mereferensikan tampilan dan tabel.
-- Uses the AdventureWorks sample database
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. Kueri dengan subpilih dan petunjuk kueri
Contoh berikut menunjukkan kueri yang berisi subpilih dan petunjuk kueri. Petunjuk kueri diterapkan secara global. Petunjuk kueri tidak diizinkan untuk ditambahkan ke pernyataan subpilih.
-- Uses the AdventureWorks sample database
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. Paksa urutan gabungan agar sesuai dengan urutan dalam kueri
Contoh berikut menggunakan petunjuk FORCE ORDER untuk memaksa rencana kueri menggunakan urutan gabungan yang ditentukan oleh kueri. Ini akan meningkatkan performa pada beberapa kueri; tidak semua kueri.
-- Uses AdventureWorks
-- Obtain partition numbers, boundary values, boundary value types, and rows per boundary
-- for the partitions in the ProspectiveBuyer table of the ssawPDW database.
SELECT sp.partition_number, prv.value AS boundary_value, lower(sty.name) AS boundary_value_type, sp.rows
FROM sys.tables st JOIN sys.indexes si ON st.object_id = si.object_id AND si.index_id <2
JOIN sys.partitions sp ON sp.object_id = st.object_id AND sp.index_id = si.index_id
JOIN sys.partition_schemes ps ON ps.data_space_id = si.data_space_id
JOIN sys.partition_range_values prv ON prv.function_id = ps.function_id
JOIN sys.partition_parameters pp ON pp.function_id = ps.function_id
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. Menggunakan EXTERNALPUSHDOWN
Contoh berikut memaksa pushdown klausa WHERE ke pekerjaan MapReduce pada tabel Hadoop eksternal.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
Contoh berikut mencegah pushdown klausa WHERE ke pekerjaan MapReduce pada tabel Hadoop eksternal. Semua baris dikembalikan ke PDW tempat klausa WHERE diterapkan.
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
Lihat Juga
Petunjuk (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)
MERGE (Transact-SQL)
DELETE (Transact-SQL)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk