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
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL di Microsoft Fabric
Petunjuk gabungan menentukan bahwa pengoptimal kueri memberlakukan strategi gabungan antara dua tabel di SQL Server. Untuk informasi umum tentang gabungan dan sintaks gabungan, lihat klausa FROM ditambah JOIN, APPLY, PIVOT.
Caution
Karena pengoptimal kueri SQL Server biasanya memilih rencana eksekusi terbaik untuk kueri, kami menyarankan agar petunjuk hanya digunakan sebagai upaya terakhir oleh pengembang dan administrator database yang berpengalaman.
Berlaku pada
Syntax
<join_hint> ::=
{ LOOP | HASH | MERGE | REMOTE | REDUCE | REPLICATE | REDISTRIBUTE [(columns count)]}
Arguments
{ LOOP | HASH | GABUNGKAN }
Berlaku untuk: Azure SQL Database, Azure SQL Managed Instance, titik akhir analitik SQL, database SQL di Microsoft Fabric, Microsoft Fabric Warehouse
Menentukan bahwa gabungan dalam kueri harus menggunakan perulangan, hashing, atau penggabungan. Menggunakan LOOP, HASH, atau MERGE JOIN memberlakukan gabungan tertentu di antara dua tabel.
LOOP tidak dapat ditentukan bersama dengan RIGHT atau FULL sebagai jenis gabungan. Untuk informasi selengkapnya, lihat Gabungan.
REMOTE
Berlaku untuk: Azure SQL Database, Azure SQL Managed Instance, titik akhir analitik SQL, database SQL di Microsoft Fabric
Menentukan bahwa operasi gabungan dilakukan di situs tabel kanan. Ini berguna ketika tabel kiri adalah tabel lokal dan tabel kanan adalah tabel jarak jauh.
REMOTE harus digunakan hanya ketika tabel kiri memiliki lebih sedikit baris daripada tabel kanan.
Jika tabel kanan bersifat lokal, gabungan dilakukan secara lokal. Jika kedua tabel bersifat jarak jauh tetapi dari sumber data yang berbeda, REMOTE menyebabkan gabungan dilakukan di situs tabel yang tepat. Jika kedua tabel adalah tabel jarak jauh dari sumber data yang sama, REMOTE tidak diperlukan.
REMOTE tidak dapat digunakan ketika salah satu nilai yang dibandingkan dalam predikat gabungan dilemparkan ke kolase yang berbeda menggunakan COLLATE klausa .
REMOTE hanya dapat digunakan untuk INNER JOIN operasi.
REDUCE
Berlaku untuk: Azure Synapse Analytics and Analytics Platform System (PDW)
Mengurangi jumlah baris yang akan dipindahkan untuk tabel di sisi kanan gabungan agar kompatibel dengan dua tabel distribusi yang tidak kompatibel. Petunjuk REDUCE juga disebut petunjuk semi-gabungan.
REPLICATE
Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW), Microsoft Fabric Warehouse
Menyebabkan operasi pemindahan siaran, di mana tabel tertentu direplikasi di semua simpul distribusi.
- Menggunakan
REPLICATEdengan gabunganINNERatauLEFT, operasi pemindahan siaran akan mereplikasi sisi kanan gabungan ke semua simpul. - Demikian pula, saat menggunakan
REPLICATEdengan gabunganRIGHT, operasi pemindahan siaran akan mereplikasi sisi kiri gabungan ke semua simpul. - Saat menggunakan
REPLICATEdengan gabunganFULL, perkiraan rencana tidak dapat dibuat.
MENDISTRIBUSIKAN KEMBALI [(columns_count)]
Berlaku untuk: Azure Synapse Analytics and Analytics Platform System (PDW)
Memaksa dua sumber data didistribusikan pada kolom yang ditentukan dalam klausa JOIN. Untuk tabel terdistribusi, Analytics Platform System (PDW) melakukan pemindahan acak pada kolom pertama kedua tabel Untuk tabel yang direplikasi, Analytics Platform System (PDW) melakukan pemangkasan pemangkasan. Untuk memahami jenis pemindahan ini, lihat bagian "Operasi Rencana Kueri DMS" di artikel "Memahami Rencana Kueri" di dokumentasi produk Sistem Platform Analitik (PDW). Petunjuk ini dapat meningkatkan performa saat rencana kueri menggunakan pemindahan siaran untuk menyelesaikan gabungan distribusi yang tidak kompatibel.
Berlaku untuk: Microsoft Fabric Warehouse
Petunjuk REDISTRIBUTE memastikan dua sumber data didistribusikan berdasarkan kolom klausa JOIN. Ini menangani beberapa kondisi gabungan, yang ditentukan oleh kolom n pertama di kedua tabel, di mana n adalah argumen column_count. Mendistribusikan ulang data mengoptimalkan performa kueri dengan menyebarkan data secara merata di seluruh simpul selama langkah-langkah perantara eksekusi.
Argumen (columns_count) hanya didukung di Microsoft Fabric Warehouse.
Remarks
Petunjuk gabungan ditentukan dalam FROM klausa kueri. Gabungkan petunjuk memberlakukan strategi gabungan antara dua tabel. Jika petunjuk gabungan ditentukan untuk dua tabel, pengoptimal kueri secara otomatis memberlakukan urutan gabungan untuk semua tabel yang digabungkan dalam kueri, berdasarkan posisi ON kata kunci.
CROSS JOIN Ketika digunakan tanpa ON klausa, tanda kurung dapat digunakan untuk menunjukkan urutan gabungan.
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. Gunakan HASH
Contoh berikut menentukan bahwa JOIN operasi dalam kueri dilakukan oleh HASH gabungan.
SELECT p.Name,
pr.ProductReviewID
FROM Production.Product AS p
LEFT OUTER HASH JOIN Production.ProductReview AS pr
ON p.ProductID = pr.ProductID
ORDER BY ProductReviewID DESC;
B. Gunakan LOOP
Contoh berikut menentukan bahwa JOIN operasi dalam kueri dilakukan oleh LOOP gabungan.
DELETE
FROM Sales.SalesPersonQuotaHistory
FROM Sales.SalesPersonQuotaHistory AS spqh
INNER LOOP JOIN Sales.SalesPerson AS sp
ON spqh.SalesPersonID = sp.SalesPersonID
WHERE sp.SalesYTD > 2500000.00;
GO
C. Gunakan MERGE
Contoh berikut menentukan bahwa JOIN operasi dalam kueri dilakukan oleh MERGE gabungan.
SELECT poh.PurchaseOrderID,
poh.OrderDate,
pod.ProductID,
pod.DueDate,
poh.VendorID
FROM Purchasing.PurchaseOrderHeader AS poh
INNER MERGE JOIN Purchasing.PurchaseOrderDetail AS pod
ON poh.PurchaseOrderID = pod.PurchaseOrderID;
GO
D. Contoh petunjuk gabungan REDUCE
Contoh berikut menggunakan REDUCE petunjuk gabungan untuk mengubah pemrosesan tabel turunan dalam kueri. Saat menggunakan REDUCE petunjuk gabungan dalam kueri ini, fis.ProductKey diproyeksikan, direplikasi dan dibuat berbeda, lalu digabungkan selama DimProduct pengacakan DimProduct pada ProductKey. Tabel turunan yang dihasilkan didistribusikan pada fis.ProductKey.
-- Uses AdventureWorks
SELECT SalesOrderNumber
FROM (
SELECT fis.SalesOrderNumber,
dp.ProductKey,
dp.EnglishProductName
FROM DimProduct AS dp
INNER REDUCE JOIN FactInternetSales AS fis
ON dp.ProductKey = fis.ProductKey
) AS dTable
ORDER BY SalesOrderNumber;
E. Contoh petunjuk gabungan REPLIKASI
Contoh berikutnya ini memperlihatkan kueri yang sama dengan contoh sebelumnya, kecuali bahwa REPLICATE petunjuk gabungan digunakan alih-alih REDUCE petunjuk gabungan. Penggunaan REPLICATE petunjuk menyebabkan nilai dalam ProductKey kolom (bergabung) dari FactInternetSales tabel direplikasi ke semua simpul. Tabel DimProduct digabungkan ke versi nilai-nilai tersebut yang direplikasi.
-- Uses AdventureWorks
SELECT SalesOrderNumber
FROM (
SELECT fis.SalesOrderNumber,
dp.ProductKey,
dp.EnglishProductName
FROM DimProduct AS dp
INNER REPLICATE JOIN FactInternetSales AS fis
ON dp.ProductKey = fis.ProductKey
) AS dTable
ORDER BY SalesOrderNumber;
F. Gunakan petunjuk REDISTRIBUTE untuk menjamin pemindahan Acak untuk gabungan distribusi yang tidak kompatibel
Kueri berikut menggunakan petunjuk kueri REDISTRIBUTE pada gabungan distribusi yang tidak kompatibel. Ini menjamin pengoptimal kueri menggunakan pemindahan Acak dalam rencana kueri. Ini juga menjamin rencana kueri tidak akan menggunakan pemindahan Siaran, yang memindahkan tabel terdistribusi ke tabel yang direplikasi.
Dalam contoh berikut, petunjuk REDISTRIBUTE memaksa pemindahan Acak pada tabel FactInternetSales karena ProductKey adalah kolom distribusi untuk DimProduct, dan bukan kolom distribusi untuk FactInternetSales.
-- Uses AdventureWorks
SELECT dp.ProductKey,
fis.SalesOrderNumber,
fis.TotalProductCost
FROM DimProduct AS dp
INNER REDISTRIBUTE JOIN FactInternetSales AS fis
ON dp.ProductKey = fis.ProductKey;
G. Menggunakan argumen jumlah kolom dengan petunjuk REDISTRIBUTE
Kueri berikut menggunakan petunjuk kueri REDISTRIBUTE dengan argumen jumlah kolom, dan pengacakan terjadi di empat kolom pertama dari setiap tabel dalam gabungan.
SELECT * FROM DA
INNER REDISTRIBUTE (4) JOIN DB
ON DA.a1 = DB.b1