結合ヒント (Transact-SQL)
更新 : 2006 年 7 月 17 日
クエリ オプティマイザで、2 つのテーブル間の結合方法を設定します。
重要 : |
---|
通常、SQL Server 2005 クエリ オプティマイザでは、クエリにとって最適な実行プランが選択されるため、<join_hint> を含むヒントは、経験を積んだ開発者やデータベース管理者が最後の手段としてのみ使用することをお勧めします。 |
適用対象
構文
<join_hint> ::=
{ LOOP | HASH | MERGE | REMOTE }
引数
- LOOP | HASH | MERGE
クエリ内の結合は、ループ、ハッシュ、またはマージを使用します。LOOP | HASH | MERGE JOIN を使用すると、2 つのテーブル間に特定の結合が設定されます。LOOP は、RIGHT または FULL と共に結合の種類として指定することはできません。
REMOTE
右側のテーブルのサイトで結合操作を実行します。これは、左側のテーブルがローカル テーブルで、右側のテーブルがリモート テーブルの場合に効果的です。REMOTE は、左側のテーブルの行数が右側のテーブルの行数よりも少ないときだけ使用します。右側のテーブルがローカルの場合、結合はローカルで実行されます。両方のテーブルがリモート テーブルでデータ ソースは異なる場合、REMOTE の指定によって結合は右側のテーブルのサイトで実行されます。両方のテーブルが同じデータ ソースのリモート テーブルの場合、REMOTE は必要ありません。
結合述語で比較されている値のいずれかを COLLATE 句を使用して別の照合順序にキャストする場合は、REMOTE を使用できません。
REMOTE は、INNER JOIN 操作に対してのみ使用できます。
解説
結合ヒントは、クエリの FROM 句で指定します。結合ヒントにより、2 つのテーブル間の結合方法を設定できます。2 つのテーブルに対して結合ヒントが指定されると、クエリ オプティマイザは、ON キーワードの位置に基づいて、クエリ内のすべての結合テーブルに対して結合の順番を自動的に設定します。ON 句を指定せずに CROSS JOIN を使用する場合は、かっこを使用して結合の順番を指定できます。
例
A. HASH を使用する
次の例では、クエリの JOIN
操作を HASH
結合によって実行することを指定します。
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 を使用する
次の例では、クエリの JOIN
操作を LOOP
結合によって実行することを指定します。
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. MERGE を使用する
次の例では、クエリの JOIN
操作を MERGE
結合によって実行することを指定します。
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
参照
関連項目
その他の技術情報
ハッシュ結合について
入れ子になっているループ結合について
マージ結合について
結合の基礎
結合の使用
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 7 月 17 日 |
|