低速パス ローカル入れ子結合 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ykx1561500561173.ditamap
dita:ditavalPath
ja-JP/ykx1561500561173.ditaval
dita:id
B035-1142
Product Category
Software
Teradata Vantage

低速パス ローカル入れ子結合プロセス

低速パス入れ子結合アルゴリズムにより適用されるプロセスは、以下のとおりです。

  1. 左のテーブルから各行を読み取ります。
  2. 左のテーブルの各行を右のテーブルのインデックス値と比較して評価します。
  3. 右のテーブルの一致するインデックス項目に対応するインデックス行を、右のテーブルで検索します。
  4. 対応する右のテーブルのインデックス行から、左のテーブルの行と結合する右のテーブルの行の行IDを検索します。
  5. 検索した行IDを使用して、右のテーブルのデータ行を読み取ります。
  6. 結合行を作成します。
  7. 左のテーブルの行と右のテーブルの行IDを使用して、最終結合を作成します。

次の図は、一般的な低速パス ローカル入れ子結合プロセスを表わしています。


Layer_1 工作表.1 工作表.2 工作表.3 工作表.4 工作表.5 工作表.6 工作表.7 工作表.8 工作表.9 工作表.10 工作表.11 工作表.12 工作表.13 工作表.14 工作表.15 工作表.16 工作表.17 工作表.18 工作表.19 工作表.20 工作表.21 工作表.22 工作表.23 工作表.24 工作表.25 工作表.26 工作表.27 工作表.28 工作表.29 工作表.30 工作表.31 工作表.32 工作表.33 工作表.34 工作表.35 工作表.36 工作表.37 工作表.38 工作表.39 工作表.40 工作表.41 工作表.42 工作表.43 工作表.44 工作表.45 工作表.46 工作表.47 工作表.48 工作表.49 工作表.50 工作表.51 工作表.52 工作表.53 工作表.54 工作表.55 工作表.56 工作表.57 工作表.58 工作表.59 工作表.60 工作表.61


Layer_1 工作表.1 工作表.2 工作表.3 工作表.4 工作表.8 工作表.9 工作表.10 工作表.11 工作表.12 工作表.13 工作表.14 工作表.15 工作表.16 工作表.17 工作表.18 工作表.19 工作表.20 工作表.21 工作表.22 工作表.23 工作表.24 工作表.25 工作表.26 工作表.27 工作表.28 工作表.29 工作表.30 工作表.31 工作表.32 工作表.33 工作表.34 工作表.35 工作表.36 工作表.37 工作表.38 工作表.39 工作表.40

次の例は、低速パス ローカル入れ子結合を使って処理される問合わせです。

department(部門)100の管理者がだれであるかを調べるために、次のような問合わせを入力したとします。

SELECT dept_name, name, yrs_exp
FROM employee, department
WHERE employee.emp_no = department.mgr_no
AND   department.dept_no = 100;

この問合わせを処理するために、最適化ルーチンは、固有プライマリ インデックス値であるdept_no=100を使用して、その値を含んだdepartment行の処理を担当しているAMPにアクセスします。また、その行の中のmgr_no値のハッシュ コードが計算されます。

このmgr_no値は、department 100を管理する従業員のemp_no (Employeeテーブルの固有プライマリ インデックス)の値と同じです。 したがって、mgr_no用に計算されるハッシュ コードも、それに相当するemp_no値のハッシュ コードと同じになります。

mgr_no用に計算されたこのハッシュ コードを使用して、それに相当するemp_noのハッシュ コードを含んだemployee行の処理を担当するAMPへのアクセスが行なわれます。

次に、その行の中のnameとyrs_expの情報が最初のAMPに送り返され、それらの情報とdepartment 100のdept_nameが結合されて、結果スプールに格納されます。これらの情報がユーザーに返されます。

この2つのAMP処理については、次の図で説明します。


2AMPプロセス

次の例は、employeeテーブルとdepartmentテーブルで低速パス入れ子結合を使用して処理されるクエリーを示します。

SELECT employee.name, department.name
FROM employee, department
WHERE employee.enum = 5
AND   employee.dept = department.dept;
Employeeテーブル
e_num e_name dept
1 Brown 200
2 Smith 310
3 Jones 310
4 Clay 400
5 Peters 150
6 Foster 400
7 Gray 310
8 Baker 310

列e_numは、テーブルのUPIとPKで、deptはFKです。

Departmentテーブル
dept dept_name
400 Education
150 Payroll
200 Finance
310 Mfg

列deptは、テーブルのUPIとPKです。