私はSQL結合の初心者で、SQLサーバーのさまざまなタイプの結合を理解しようとしています. 私のクエリは、AdventureWorks2008 データベースを使用して SQL Server 2012 で入力した次の 2 つのコードに関連しています。ただし、コード ピース 1 には非常に長い時間がかかります (現在、約 45 分間実行し続けています)。結果セットはありません。ただし、コード ピース 2 は非常に高速に実行され、結果セットを出力します。何が問題なのか混乱しています。
これがコードです。
コード ピース 1..(これは、結果セットなしで実行するのに非常に長い時間がかかります)
select
pro.ProductID
,pro.Name
,soh.OrderDate
,soh.SalesOrderID
from Sales.SalesOrderHeader soh
inner join Sales.SalesOrderDetail sod on sod.SalesOrderID = sod.SalesOrderID
inner join Production.Product pro on pro.ProductID = sod.ProductID
order by soh.SalesOrderID
コード ピース 2 (これはすぐに実行されます)
`select soh.SalesOrderId
,soh.orderDate
,p.ProductId
,p.name
from sales.SalesOrderHeader as soh
inner join sales.SalesOrderDetail as sod on soh.SalesOrderID = sod.SalesOrderID
inner join Production.Product as p on sod.ProductID = p.ProductID
order by soh.SalesOrderId`
ヘルプ/ヒントをいただければ幸いです。私は、stackoverflow の以前の質問をすべて調査しましたが、フィールドの順序がクエリの実行を遅らせる原因なのか、結合句の順序が原因なのかについて、明確な答えは見つかりませんでした。また、クエリ プラン オプティマイザーには、クエリ実行に最適なプランを決定する機能があることを読みましたが、コード部分のコンテキストで合理化できませんでした。