İpuçları (Transact-SQL) birleştirme

sorgu iyileştiricisi iki tablo arasındaki birleştirmek stratejisi zorla birleştirme ipuçları belirtin.

Önemli notÖnemli

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

İçin geçerlidir:

SİL

SEÇİN

GÜNCELLEŞTİRME

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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

Bağımsız değişkenler

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

  • UZAK
    Sağ tablositesinde birleştirmek işlemi yapılacağını belirtir.Sol tablo yerel tablo ve uzak tablosağ tablo olduğunda yararlıdır.Sol tablo sağ tablo' den daha az satır olduğunda uzaktan kullanılmalıdır.

    birleştirmek sağ tablo yerel ise, yerel olarak yapılır.Her iki tablo uzak, ancak farklı veri kaynaklarından, uzaktan birleştirmek sağ tablositelerinde gerçekleştirilmesi neden olur.Her iki tablonun aynı veri kaynakuzak tablolardan, uzaktan gerekli değildir.

    İçinde birleştirmek yüklemi karşılaştırılan değerlerden birini collate yan tümcekullanarak başka bir harmanlama için artığını uzaktan kullanılamaz.

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

Açıklamalar

Birleştirme ipuçları from yan tümce sorgunun içinde belirtilir.Birleştirme ipuçları iki tablo arasındaki birleştirmek stratejisini uygular.Herhangi bir iki tablo birleştirmek ipucu belirttiyseniz, sorgu iyileştiricisi açık anahtar sözcükler konumuna bağlı sorgu, birleştirilen tüm tablolar için birleştirmek sırasını otomatik olarak zorlar.Çapraz birleştirme on yan tümcekullanıldığında, ayraç birleştirmek sırasını belirtmek için kullanılır.

Örnekler

A.KARMA kullanma

Aşağıdaki örnekte verilmiştir JOIN tarafından sorgu işlemi gerçekleştirilen bir HASH birleştirmek.

USE AdventureWorks2008R2;
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.Kullanma loop

Aşağıdaki örnekte verilmiştir JOIN tarafından sorgu işlemi gerçekleştirilen bir LOOP birleştirmek.

USE AdventureWorks2008R2;
GO
DELETE FROM Sales.SalesPersonQuotaHistory 
FROM Sales.SalesPersonQuotaHistory AS spqh
    INNER LOOP JOIN Sales.SalesPerson AS sp
    ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
GO

C.Mektup birleştirme kullanma

Aşağıdaki örnekte verilmiştir JOIN tarafından sorgu işlemi gerçekleştirilen bir MERGE birleştirmek.

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