ネストされたループ結合アルゴリズムを説明する記事を読んでいますが、ネストされた選択の実際の動作原理を正確に理解していません。記事で提供されている例を次に示します。
この例では、姓が「WIN」で始まる従業員を検索し、これらの従業員のすべての SALES をフェッチします。
ネストされたループ結合を表すクエリは次のとおりです。
select employees0_.subsidiary_id as subsidiary1_0_
-- MORE COLUMNS
from employees employees0_
where upper(employees0_.last_name) like ?;
select sales0_.subsidiary_id as subsidiary4_0_1_
-- MORE COLUMNS
from sales sales0_
where sales0_.subsidiary_id=?
and sales0_.employee_id=?;
select sales0_.subsidiary_id as subsidiary4_0_1_
-- MORE COLUMNS
from sales sales0_
where sales0_.subsidiary_id=?
and sales0_.employee_id=?;
ご覧のとおり、最後の 2 つのクエリは完全に同じです。これは私が混乱したものです。最初の 2 つのクエリを生成するだけでは十分ではないのはなぜですか? なぜ 3 番目のものを生成する必要があるのでしょうか。