Petunjuk gabungan (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
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.
Perhatian
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 untuk
Sintaks
<join_hint> ::=
{ LOOP | HASH | MERGE | REMOTE }
Argumen
{ LOOP | HASH | GABUNGKAN }
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.
TERPENCIL
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.
Keterangan
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.
Contoh
Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022
database sampel atau AdventureWorksDW2022
, yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.
J. 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