Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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.
-
REPLICATEveyaINNERbirleştirme ileLEFTkullanarak, yayın taşıma işlemi birleştirmenin sağ tarafını tüm düğümlere çoğaltır. - Benzer şekilde,
REPLICATEbirleştirme ileRIGHTkullanılırken yayın taşıma işlemi birleştirmenin sol tarafını tüm düğümlere çoğaltır. -
REPLICATEbirleştirme ileFULLkullanı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,
Ş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