Petunjuk (Transact-SQL) - Gabung

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure 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 FROM (Transact-SQL).

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

Konvensi sintaks transact-SQL

Sintaksis

<join_hint> ::=   
     { LOOP | HASH | MERGE | REMOTE }  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

LOOP | HASH | MENGGABUNGKAN

Menentukan bahwa gabungan dalam kueri harus menggunakan perulangan, hashing, atau penggabungan. Menggunakan LOOP |HASH | 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

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 klausa COLLATE.

REMOTE hanya dapat digunakan untuk operasi INNER JOIN.

Keterangan

Petunjuk gabungan ditentukan dalam klausa FROM kueri. Gabungkan petunjuk memberlakukan strategi gabungan antara dua tabel. Jika petunjuk gabungan ditentukan untuk dua tabel apa pun, pengoptimal kueri secara otomatis memberlakukan urutan gabungan untuk semua tabel yang bergabung dalam kueri, berdasarkan posisi kata kunci ON. Ketika CROSS JOIN digunakan tanpa klausul ON, tanda kurung dapat digunakan untuk menunjukkan urutan gabungan.

Contoh

J. Menggunakan HASH

Contoh berikut menentukan bahwa JOIN operasi dalam kueri dilakukan oleh HASH gabungan. Contohnya menggunakan database AdventureWorks2022.

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. Menggunakan LOOP

Contoh berikut menentukan bahwa JOIN operasi dalam kueri dilakukan oleh LOOP gabungan. Contohnya menggunakan database AdventureWorks2022.

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. Menggunakan MERGE

Contoh berikut menentukan bahwa JOIN operasi dalam kueri dilakukan oleh MERGE gabungan. Contohnya menggunakan database AdventureWorks2022.

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  

Lihat Juga

Petunjuk (Transact-SQL)