Nested Loop JOINは一般的に低速とみなされますが、これは実行されなければならない比較の量が多いためです。下の図では、両方のテーブルに5つの行があり、合計25の比較(5 x 5)になります。大きなテーブルでは、これは非常に多くの比較になる可能性があります。その結果、CPUとメモリを激しく使用することになります。
ワグナー、バート"MergeJoin内部の可視化とその影響の理解"データ with Bert Atom、https://bertwagner.com/posts/visualizing-nested-loops-joins-and-understanding-their-implications/
Nested Loopはクロスジョインが指定されている場合に使用されます:
SELECT
sod.salesorderid
,soh.salesorderid
FROM
dwh.SalesOrderDetail sod
CROSS
JOIN
pgsql_local_data.SalesOrderHeader soh
OPTION
$ALLOW_CARTESIAN ALWAYS
;;
OPTION $ALLOW_CARTESIAN ALWAYS
。デフォルトでは、ユーザが誤ってクロス結合を作成し、パフォーマンスに影響を与えることを防ぐために、クロス結合(カルテ結合とも呼ばれます)は禁止されています。