Teradata-JOIN戦略

この章では、Teradataで使用可能なさまざまなJOIN戦略について説明します。

結合メソッド

Teradataは、さまざまな結合方法を使用して結合操作を実行します。一般的に使用されるJoinメソッドのいくつかは次のとおりです。

  • マージ結合
  • ネストされた結合
  • 製品への参加

マージ結合

マージ結合メソッドは、結合が等式条件に基づいている場合に実行されます。マージ結合では、結合行が同じAMP上にある必要があります。行は、行ハッシュに基づいて結合されます。マージ結合は、異なる結合戦略を使用して、行を同じAMPに移動します。

戦略#1

結合列が対応するテーブルのプライマリインデックスである場合、結合行はすでに同じAMP上にあります。この場合、配布は必要ありません。

次の従業員と給与の表を検討してください。

CREATE SET TABLE EMPLOYEE,FALLBACK ( 
   EmployeeNo INTEGER, 
   FirstName VARCHAR(30) , 
   LastName VARCHAR(30) , 
   DOB DATE FORMAT 'YYYY-MM-DD', 
   JoinedDate DATE FORMAT 'YYYY-MM-DD', 
   DepartmentNo BYTEINT 
) 
UNIQUE PRIMARY INDEX ( EmployeeNo );
CREATE SET TABLE Salary ( 
   EmployeeNo INTEGER, 
   Gross INTEGER,  
   Deduction INTEGER, 
   NetPay INTEGER 
) 
UNIQUE PRIMARY INDEX(EmployeeNo);

これらの2つのテーブルがEmployeeNo列で結合されている場合、EmployeeNoは結合されている両方のテーブルのプライマリインデックスであるため、再配布は行われません。

戦略#2

次のEmployeeテーブルとDepartmentテーブルについて考えてみます。

CREATE SET TABLE EMPLOYEE,FALLBACK (
   EmployeeNo INTEGER, 
   FirstName VARCHAR(30) , 
   LastName VARCHAR(30) , 
   DOB DATE FORMAT 'YYYY-MM-DD', 
   JoinedDate DATE FORMAT 'YYYY-MM-DD', 
   DepartmentNo BYTEINT 
) 
UNIQUE PRIMARY INDEX ( EmployeeNo );
CREATE SET TABLE DEPARTMENT,FALLBACK ( 
   DepartmentNo BYTEINT, 
   DepartmentName CHAR(15) 
) 
UNIQUE PRIMARY INDEX ( DepartmentNo );

これらの2つのテーブルがDeparmentNo列で結合されている場合、DepartmentNoは1つのテーブルのプライマリインデックスであり、別のテーブルの非プライマリインデックスであるため、行を再配布する必要があります。このシナリオでは、行の結合が同じAMP上にない場合があります。このような場合、TeradataはDepartmentNo列のemployeeテーブルを再配布する場合があります。

戦略#3

上記のEmployeeテーブルとDepartmentテーブルの場合、Departmentテーブルのサイズが小さいと、TeradataはすべてのAMPでDepartmentテーブルを複製する可能性があります。

ネストされた結合

ネストされた結合は、すべてのAMPを使用するわけではありません。ネストされた結合を実行するには、条件の1つが、一方のテーブルの一意のプライマリインデックスで等しいことであり、次にこの列をもう一方のテーブルの任意のインデックスに結合する必要があります。

このシナリオでは、システムは1つのテーブルの一意のプライマリインデックスを使用して1つの行をフェッチし、その行ハッシュを使用して他のテーブルから一致するレコードをフェッチします。ネストされた結合は、すべての結合メソッドの中で最も効率的です。

製品への参加

製品結合は、1つのテーブルの各適格行を他のテーブルの各適格行と比較します。以下の要因により、製品の結合が発生する場合があります-

  • 条件が欠落している場所。
  • 結合条件は、等式条件に基づいていません。
  • テーブルエイリアスが正しくありません。
  • 複数の結合条件。