Aracılığıyla paylaş


Birleştirme ipuçları (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL analiz uç noktasıMicrosoft Fabric'te ambarMicrosoft Fabric'te SQL veritabanı

Birleştirme ipuçları, sorgu iyileştiricisinin SQL Server'daki iki tablo arasında birleştirme stratejisini zorunlu kıldığını belirtir. Birleştirmeler ve birleştirme söz dizimi hakkında genel bilgi için bkz. FROM yan tümcesi artı JOIN, APPLY, PIVOT .

Caution

SQL Server sorgu iyileştiricisi genellikle sorgu için en iyi yürütme planını seçtiğinden, ipuçlarının yalnızca deneyimli geliştiriciler ve veritabanı yöneticileri tarafından son çare olarak kullanılmasını öneririz.

Şunlar için geçerlidir:

Transact-SQL söz dizimi kuralları

Syntax

<join_hint> ::=
     { LOOP | HASH | MERGE | REMOTE | REDUCE | REPLICATE | REDISTRIBUTE [(columns count)]}

Arguments

{ LOOP | KARMA | MERGE }

Şunlar için geçerlidir: Azure SQL Database, Azure SQL Managed Instance, SQL analytics endpoint, SQL database in Microsoft Fabric, Microsoft Fabric Warehouse

Sorgudaki birleştirmenin döngü, karma oluşturma veya birleştirme kullanması gerektiğini belirtir. LOOP, HASHveya MERGE JOIN kullanılması, iki tablo arasında belirli bir birleştirmeyi zorunlu kıldığında. LOOP birleştirme türü olarak RIGHT veya FULL ile birlikte belirtilemiyor. Daha fazla bilgi için bkz . Birleştirmeler.

REMOTE

Şunlar için geçerlidir: Azure SQL Database, Azure SQL Managed Instance, SQL analytics endpoint, SQL database in Microsoft Fabric

Birleştirme işleminin doğru tablonun sitesinde gerçekleştirildiğini belirtir. Bu, sol tablo yerel bir tablo, sağ tablo ise uzak bir tablo olduğunda kullanışlıdır. REMOTE yalnızca sol tablonun sağ tablodan daha az satırı olduğunda kullanılmalıdır.

Doğru tablo yerelse, birleştirme yerel olarak gerçekleştirilir. Her iki tablo da uzak ancak farklı veri kaynaklarından geliyorsa, REMOTE birleştirmenin doğru tablonun sitesinde gerçekleştirilmesine neden olur. Her iki tablo da aynı veri kaynağından uzak tablolarsa REMOTE gerekli değildir.

birleştirme koşulunda karşılaştırılan değerlerden biri REMOTE yan tümcesi kullanılarak farklı bir harmanlamada yayınlandığında COLLATE kullanılamaz.

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

REDUCE

Şunlar için geçerlidir: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

Uyumlu olmayan iki dağıtımı uyumlu hale getirmek için birleştirmenin sağ tarafındaki tablo için taşınacak satır sayısını azaltır. REDUCE ipucu, yarı birleştirme ipucu olarak da adlandırılır.

REPLICATE

Şunlar için geçerlidir: Azure Synapse Analytics, Analytics Platform Sistemi (PDW), Microsoft Fabric Warehouse

Belirli bir tablonun tüm dağıtım düğümleri arasında çoğaltılacağı yayın taşıma işlemine neden olur.

  • REPLICATE veya INNER birleştirme ile LEFT kullanarak, yayın taşıma işlemi birleştirmenin sağ tarafını tüm düğümlere çoğaltır.
  • Benzer şekilde, REPLICATE birleştirme ile RIGHT kullanılırken yayın taşıma işlemi birleştirmenin sol tarafını tüm düğümlere çoğaltır.
  • REPLICATE birleştirme ile FULL kullanılırken tahmini bir plan oluşturulamaz.

YENİDEN DAĞIT [(columns_count)]

Şunlar için geçerlidir: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

İki veri kaynağını JOIN yan tümcesinde belirtilen sütunlara dağıtılmaya zorlar. Dağıtılmış bir tablo için Analiz Platformu Sistemi (PDW), her iki tablonun da ilk sütununda karışık hareket gerçekleştirir Çoğaltılan bir tablo için Analiz Platformu Sistemi (PDW) kırpma hareketi gerçekleştirir. Bu taşıma türlerini anlamak için,Analytics Platform Sistemi (PDW) ürün belgelerinin "Sorgu Planlarını Anlama" makalesindeki "DMS Sorgu Planı İşlemleri" bölümüne bakın. Bu ipucu, sorgu planı uyumsuz bir dağıtımı çözümlemek için yayın taşıması kullandığında performansı geliştirebilir.

Şunlar için geçerlidir: Microsoft Fabric Warehouse

REDISTRIBUTE ipucu, iki veri kaynağının JOIN yan tümcesi sütunlarına göre dağıtılmasını sağlar. Her iki tablodaki ilk n sütunu tarafından belirtilen birden çok birleştirme koşulunu işler; burada ncolumn_count bağımsız değişkenidir. Verilerin yeniden dağıtılması, yürütmenin ara adımları sırasında verileri düğümler arasında eşit bir şekilde dağıtarak sorgu performansını iyileştirir.

(columns_count) bağımsız değişkeni yalnızca Microsoft Fabric Warehouse'da desteklenir.

Remarks

Birleştirme ipuçları, sorgunun FROM yan tümcesinde belirtilir. Birleştirme ipuçları, iki tablo arasında birleştirme stratejisini zorunlu kılma. İki tablo için birleştirme ipucu belirtilirse, sorgu iyileştiricisi, ON anahtar sözcüklerinin konumuna bağlı olarak sorgudaki tüm birleştirilmiş tablolar için birleştirme sırasını otomatik olarak zorlar. CROSS JOIN yan tümcesi olmadan bir ON kullanıldığında birleştirme sırasını belirtmek için parantezler kullanılabilir.

Examples

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. HASH kullanın

Aşağıdaki örnek, sorgudaki JOIN işleminin bir HASH birleştirmesi tarafından gerçekleştirildiğini belirtir.

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. LOOP kullanın

Aşağıdaki örnek, sorgudaki JOIN işleminin bir LOOP birleştirmesi tarafından gerçekleştirildiğini belirtir.

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. MERGE kullanın

Aşağıdaki örnek, sorgudaki JOIN işleminin bir MERGE birleştirmesi tarafından gerçekleştirildiğini belirtir.

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

D. REDUCE birleştirme ipucu örneği

Aşağıdaki örnek, türetilmiş tablonun sorgu içinde işlenmesini değiştirmek için REDUCE birleştirme ipucunu kullanır. Bu sorguda REDUCE birleştirme ipucu kullanılırken, fis.ProductKey yansıtılır, çoğaltılır ve ayrı yapılır ve DimProductDimProduct karıştırma sırasında ProductKey birleştirilir. Elde edilen türetilmiş tablo fis.ProductKeyüzerinde dağıtılır.

-- Uses AdventureWorks
  
SELECT SalesOrderNumber
FROM (
    SELECT fis.SalesOrderNumber,
        dp.ProductKey,
        dp.EnglishProductName
    FROM DimProduct AS dp
    INNER REDUCE JOIN FactInternetSales AS fis
        ON dp.ProductKey = fis.ProductKey
    ) AS dTable
ORDER BY SalesOrderNumber;

E. ÇOĞALTMA birleştirme ipucu örneği

Bu sonraki örnekte, REPLICATE birleştirme ipucu yerine bir REDUCE birleştirme ipucu kullanılması dışında önceki örnekle aynı sorgu gösterilmektedir. REPLICATE ipucunun kullanılması, ProductKey tablosundaki FactInternetSales (birleştirme) sütunundaki değerlerin tüm düğümlere çoğaltılmasına neden olur. DimProduct tablosu, bu değerlerin çoğaltılmış sürümüne katılır.

-- Uses AdventureWorks

SELECT SalesOrderNumber
FROM (
    SELECT fis.SalesOrderNumber,
        dp.ProductKey,
        dp.EnglishProductName
    FROM DimProduct AS dp
    INNER REPLICATE JOIN FactInternetSales AS fis
        ON dp.ProductKey = fis.ProductKey
    ) AS dTable
ORDER BY SalesOrderNumber;

F. Dağıtım uyumsuz birleştirme için Karıştırma taşımasını garanti etmek için DAĞITIM ipucunu kullanın

Aşağıdaki sorgu, uyumsuz birleştirme dağıtımında REDISTRIBUTE sorgu ipucunu kullanır. Bu, sorgu iyileştiricisinin sorgu planında Karıştırma taşıması kullanmasını garanti eder. Bu, sorgu planının dağıtılmış tabloyu çoğaltılmış bir tabloya taşıyan Yayın taşıması kullanmayacağını da garanti eder.

Aşağıdaki örnekte, REDISTRIBUTEFactInternetSalesdağıtım sütunu olduğundan ve ProductKeydağıtım sütunu olmadığından DimProduct ipucu FactInternetSales tablosunda Karıştırma hareketini zorlar.

-- Uses AdventureWorks
  
SELECT dp.ProductKey,
    fis.SalesOrderNumber,
    fis.TotalProductCost
FROM DimProduct AS dp
INNER REDISTRIBUTE JOIN FactInternetSales AS fis
    ON dp.ProductKey = fis.ProductKey;

G. YENIDEN DAĞITIM ipucuyla sütun sayısı bağımsız değişkenini kullanma

Aşağıdaki sorgu sütun sayısı bağımsız değişkeniyle REDISTRIBUTE sorgu ipucunu kullanır ve birleştirmedeki her tablonun ilk dört sütunu arasında karıştırma gerçekleşir.

SELECT * FROM DA
INNER REDISTRIBUTE (4) JOIN DB
ON DA.a1 = DB.b1