これは、SQLの実装によって異なります。
SQLは宣言型であり、論理仕様から物理計画を作成するのはオプティマイザー次第です。SQL Serverは、このサブクエリを非相関化して、OUTER JOIN
CREATE TABLE A(id INT PRIMARY KEY, col1 INT, col2 INT, col3 INT)
CREATE TABLE B(aid INT)
CREATE CLUSTERED INDEX ix ON B(aid)
/*Fool optimiser into thinking tables aren't empty*/
update statistics A with rowcount = 1000000, pagecount = 100000
update statistics B with rowcount = 1000000, pagecount = 100000
SELECT col1,
col2,
col3,
(SELECT count( B.aid)
FROM B
WHERE B.aid = A.id) AS col4
FROM A
DROP TABLE A, B
計画を立てる

これは基本的にと同じです
SELECT col1,
col2,
col3,
Cnt
FROM (SELECT COUNT(aid) AS Cnt,
aid
FROM B
GROUP BY aid) T
RIGHT OUTER JOIN A
ON A.id = T.aid
サブクエリは、物理的な実装としてのRIGHT OUTER JOIN
withとして論理的に表されます。MERGE JOIN
マージ結合は、ネストされたループ結合の行ごとの動作ではなく、各入力を1回処理します。