Bagikan melalui


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

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 | 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