Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL 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 OPTION klausa yang dapat ditentukan dengan pernyataan .
Klausa ini dapat ditentukan dalam SELECTpernyataan , , DELETEUPDATE, dan MERGE .
Syntax
Sintaks untuk SQL Server, Azure SQL Managed Instance, dan Azure SQL Database:
[ OPTION ( <query_hint> [ , ...n ] ) ]
Sintaks untuk Gudang di 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>'
Sintaks untuk Azure Synapse Analytics and Analytics Platform System (PDW) dan titik akhir analitik SQL di 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
Sintaks untuk kumpulan SQL tanpa server di Azure Synapse Analytics:
OPTION ( <query_option> [ , ...n ] )
<query_option> ::=
LABEL = label_name
Arguments
query_hint
Kata kunci yang menunjukkan petunjuk pengoptimal mana yang digunakan untuk menyesuaikan cara Mesin Database memproses pernyataan. Untuk informasi selengkapnya, lihat Petunjuk Kueri.
Examples
Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.
A. 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, dan Analytics Platform System (PDW)
B. Pernyataan SELECT dengan label dalam klausa OPTION
Contoh berikut menunjukkan SELECT pernyataan dengan label dalam OPTION klausa.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');
C. Pernyataan SELECT dengan petunjuk kueri dalam klausa OPTION
Contoh berikut menunjukkan SELECT pernyataan yang menggunakan petunjuk kueri dalam HASH JOIN klausaOPTION.
-- 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 Azure Synapse Analytics SELECT yang berisi label dan beberapa petunjuk kueri. Ketika kueri dijalankan pada simpul Komputasi, SQL Server menerapkan gabungan hash atau gabungan gabungan, sesuai dengan strategi yang diputuskan SQL Server adalah yang paling optimal.
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 HASH JOIN petunjuk kueri dalam kueri yang mereferensikan tampilan dan 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. Kueri dengan subpilih dan petunjuk kueri
Contoh berikut menunjukkan kueri yang berisi subpilih dan petunjuk kueri. Petunjuk kueri diterapkan secara global. Petunjuk kueri tidak dapat ditambahkan ke pernyataan subpilih.
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 FORCE ORDER petunjuk untuk memaksa rencana kueri menggunakan urutan gabungan yang ditentukan oleh kueri. Petunjuk ini meningkatkan performa pada beberapa kueri, tetapi tidak semua kueri.
Kueri ini mendapatkan nomor partisi, nilai batas, jenis nilai batas, dan baris per batas untuk partisi dalam ProspectiveBuyer tabel 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. Gunakan EXTERNALPUSHDOWN
Contoh berikut memaksa pushdown WHERE klausul ke pekerjaan MapReduce pada tabel Hadoop eksternal.
SELECT ID FROM External_Table_AS A
WHERE ID < 1000000
OPTION (FORCE EXTERNALPUSHDOWN);
Contoh berikut mencegah pushdown WHERE klausul ke pekerjaan MapReduce pada tabel Hadoop eksternal. Semua baris dikembalikan ke PDW tempat WHERE klausul diterapkan.
SELECT ID FROM External_Table_AS A
WHERE ID < 10
OPTION (DISABLE EXTERNALPUSHDOWN);
Contoh: Gudang Data Microsoft Fabric
I. Mengkueri data pada titik waktu
Untuk informasi selengkapnya, lihat PETUNJUK kueri TIMESTAMP.
TIMESTAMP Gunakan sintaks dalam OPTION klausa untuk mengkueri data seperti yang ada di masa lalu, di Fabric Data Warehouse. Kueri sampel berikut mengembalikan data seperti yang muncul pada 13 Maret 2024 pukul 19.39.35.28 UTC. Zona waktu selalu dalam 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. Pernyataan SELECT dengan label dalam klausa OPTION
Contoh berikut menunjukkan SELECT pernyataan dengan label dalam OPTION klausa. Untuk informasi selengkapnya, lihat Mengkueri label di Fabric Data Warehouse.
SELECT * FROM FactResellerSales
OPTION (LABEL = 'q17');