Ipucu (Transact-SQL) katılın.

birleştirmek ipuçları, sorgu iyileştiricisi, iki tablo arasındaki bir birleştirmek stratejisini Uygula belirtin.

Important noteImportant Note:

Çünkü SQL Server sorgu iyileştiricisi, genellikle bir sorgu için en iyi yürütme planı seçer, öneririz, dahil ipuçları <join_hint>, yalnızca son çare olarak, deneyimli geliştiriciler ve Veritabanı yöneticileri tarafından kullanılır.

Uygulanacağı yer:

DELETE

SELECT

UPDATE

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • DÖNGÜ | KARMA | BİRLEŞTİRME
    Sorguda birleştirmek döngü, karma veya birleştirmek kullanması gerektiğini belirtir.LOOP |HASH kullanarak | belirli bir birleştirmek iki tablo arasında birleştirmek birleştirmek zorlar.LOOP ile birlikte SAğ veya TAM bir birleştirmek türü olarak belirtilemez.

  • UZAK
    birleştirmek işlemi sağdaki sitesinde gerçekleştirildiğini belirtir tablo.Sol tablodaki yerel bir tablodur ve bir uzak tablo sağ tablo olduğunda yararlıdır.Sol tablodaki sağ tablo'den daha az satır varsa, UZAKTAN kullanılmalıdır.

    Sağdaki tablo olan yerel birleştirmek yerel olarak gerçekleştirilir.Her iki tablo s uzak ancak farklı veri kaynaklarından, UZAKTAN birleştirmek sağdaki sitesinde gerçekleştirilecek neden olur tablo.Her iki tablo aynı veri kaynağından alınan uzak tablo, UZAKTAN gerekli değildir.

    birleştirmek koşulunu karşılaştırılan değerlerinden farklı bir harmanlama COLLATE kullanarak artığını olduğunda UZAKTAN kullanılamaz yan tümce.

    Uzaktan yalnızca INNER birleştirmek işlemleri için kullanılabilir.

Remarks

KIMDEN belirtilen birleştirme ipuçları yan tümce sorgu.birleştirmek ipuçları iki tablo arasındaki bir birleştirmek stratejisini Uygula.Bir birleştirmek ipucu için iki tablo belirtilmezse, sorgu iyileştiricisi, otomatik olarak birleştirmek sipariş ON anahtar sözcükler konumuna bağlı sorgudaki tüm birleştirilmiş tablolar için zorlar.Çapraz bir birleştirmek ON yan tümcesinde ' kullanıldığında, parantez birleştirmek sırasını belirtmek için kullanılır.

Örnekler

C.HASH kullanma

Aşağıdaki örnek belirleyen JOIN Sorgudaki bir işlem tarafından gerçekleştirilen bir HASH birleştirmek.

USE AdventureWorks;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER HASH JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID
ORDER BY ProductReviewID DESC;

b.LOOP kullanma

Aşağıdaki örnek belirleyen JOIN Sorgudaki bir işlem tarafından gerçekleştirilen bir LOOP birleştirmek.

USE AdventureWorks;
GO
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.BIRLEŞTIRME kullanma

Aşağıdaki örnek belirleyen JOIN Sorgudaki bir işlem tarafından gerçekleştirilen bir MERGE birleştirmek.

USE AdventureWorks;
GO
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