Ipuçları (Transact-sql) birleştirme

Birleştirme ipuçları query optimizer, iki tablo arasındaki birleşim strateji zorla belirtin.

Önemli notÖnemli

Çünkü SQL Serversorgu en iyi duruma getiricisi genellikle en iyi bir sorgu yürütme planını seçer, bu ipuçları, dahil öneririz <join_hint>, son çare deneyimli geliştiriciler tarafından kullanılır ve veritabanı yöneticileri.

İçin geçerlidir:

DELETE

SEÇİN

GÜNCELLEŞTİRME

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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

Bağımsız değişkenler

  • DÖNGÜ | KARMA | BİRLEŞTİRME
    Sorgudaki birleşim döngü, karma veya birleştirme kullanması gerektiğini belirtir. DÖNGÜ kullanarak |KARMA | İki tablo arasında belirli bir birleştirme birleştirme birleştirme zorlar. DÖNGÜ, sağ ile birlikte veya tam bir birleştirme türü belirtilemez.

  • UZAK
    Birleştirme işlemi sağ Tablo sitesinde gerçekleştirilen belirtir. Sol tablodaki yerel tablo ve sağ tablo uzak tablo olduğunda yararlıdır. Yalnızca sol tablodaki sağ Masa daha az satır olduğunda uzaktan kullanılmalıdır.

    Sağ tablo yerel birleştirme yerel olarak gerçekleştirilir. Her iki tablo uzak ama farklı veri kaynaklarından, uzaktan birleştirme sağ Tablo sitede gerçekleştirilecek neden olur. Her iki tablonun aynı veri kaynağından uzak tabloları varsa, uzaktan gerekli değildir.

    Birleştirme yüklemi karşılaştırılan değerlerden birini collate yan tümcesini kullanarak farklı bir harmanlama artığını uzaktan kullanılamaz.

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

Açıklamalar

Birleştirme ipuçları bir sorgunun from yan tümcesinde belirtilir. Birleştirme ipuçları, iki tablo arasındaki birleşim stratejisini uygular. İki tablo için bir birleştirme ipucu belirttiyseniz, query optimizer tüm birleştirilmiş iki tablo on anahtar konumunu esas sorgu, birleştirme sırasını otomatik olarak zorlar. ÇAPRAZ birleştirme on yan tümcesi kullanıldığında, ayraç birleştirme sırasını belirtmek için kullanılır.

Örnekler

A.Using :

Aşağıdaki örnek belirtir JOINişlemi tarafından gerçekleştirilir bir HASHüyelik.

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

USE AdventureWorks2012;
GO
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.Using :

Aşağıdaki örnek belirtir JOINişlemi tarafından gerçekleştirilir bir LOOPüyelik.

USE AdventureWorks2012;
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

USE AdventureWorks2012;
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 belirtir JOINişlemi tarafından gerçekleştirilir bir MERGEüyelik.

USE AdventureWorks2012;
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

USE AdventureWorks2012;
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

Ayrıca bkz.

Başvuru

Ipuçları (Transact-sql)