クエリは、あなたが提案するほど文字通りには実行されません。内部クエリが最初に実行され、次にそれらの結果が外部クエリと結合されます。オプティマイザーはクエリを受け取り、さまざまな結合順序、インデックスの使用法などを通じてデータを取得するためのさまざまな方法を検討し、十分に最適であると思われる計画を立てます。
両方のクエリを実行してそれぞれの実行プランを見ると、まったく同じクエリを使用していることがわかると思います。
同じ概念の簡単な例を次に示します。スキーマを次のように作成しました。
CREATE TABLE A (id int, value int)
CREATE TABLE B (id int, value int)
INSERT INTO A (id, value)
VALUES (1,900),(2,800),(3,700),(4,600)
INSERT INTO B (id, value)
VALUES (2,800),(3,700),(4,600),(5,500)
CREATE CLUSTERED INDEX IX_A ON A (id)
CREATE CLUSTERED INDEX IX_B ON B (id)
そして、あなたが提供したようなクエリを実行しました。
SELECT * FROM A INNER JOIN B ON A.id = B.id
SELECT * FROM (SELECT * FROM A) A1 INNER JOIN (SELECT * FROM B) B1 ON A1.id = B1.id
生成された計画は次のようになりました。
ご覧のとおり、どちらもインデックスを利用しています。