Teradata-join-strategies

提供:Dev Guides
移動先:案内検索

Teradata-JOIN戦略

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

結合方法

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

  • 結合を結合
  • ネストされた結合
  • 製品結合

結合を結合

結合が等価条件に基づいている場合、結合結合メソッドが実行されます。 結合結合では、結合行が同じ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列で従業員テーブルを再配布する場合があります。

戦略#3

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

ネストされた結合

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

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

製品結合

製品結合は、1つのテーブルからの各適格行を他のテーブルからの各適格行と比較します。 製品の結合は、次の要因のいくつかのために行われる場合があります-

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