📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 18行目: | 18行目: | ||
); | ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | |||
== 実行プロセス == | |||
相関サブクエリの実行プロセスを以下に示す。 | |||
# まず、外部クエリが実行されて、処理対象の行レコードが特定される。 | |||
# 外部クエリの各レコードに対して、 | |||
#* そのレコードの値を使用して内部クエリ (サブクエリ) が実行される。 | |||
#* サブクエリの結果を使用して、その行を最終結果に含めるかどうかが判断される。 | |||
# このプロセスが外部クエリの全てのレコードに対して繰り返される。 | |||
<br> | |||
<syntaxhighlight lang="sql"> | |||
SELECT e1.employee_name, e1.salary | |||
FROM employees e1 | |||
WHERE e1.salary > ( | |||
SELECT AVG(salary) | |||
FROM employees e2 | |||
WHERE e1.department = e2.department | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
# 外部クエリがemployeesテーブルから最初の従業員レコードを取得する。 | |||
# その従業員のdepartmentカラムを使用して、サブクエリがその部門の平均給与を計算する。 | |||
# 従業員のsalaryカラムと計算された平均給与を比較する。 | |||
# 条件を満たせば結果セットに含める。 | |||
# 次の従業員レコードに移動して、2〜4を繰り返す。 | |||
<br> | |||
このような動作特性から、以下に示すことがわかる。<br> | |||
* 外部クエリの各レコードに対してサブクエリが実行されるため、処理時間が長くなる。 | |||
* データ量が多い場合、パフォーマンスへの影響を考慮する必要がある。 | |||
* インデックスの適切な設定が重要になる。 | |||
<br><br> | <br><br> | ||