Teradata - JOIN-Strategien
In diesem Kapitel werden die verschiedenen in Teradata verfügbaren JOIN-Strategien erläutert.
Join-Methoden
Teradata verwendet verschiedene Verknüpfungsmethoden, um Verknüpfungsvorgänge auszuführen. Einige der häufig verwendeten Join-Methoden sind:
- Zusammenführen Verbinden
- Verschachtelter Join
- Produkt verbinden
Zusammenführen Verbinden
Die Merge Join-Methode findet statt, wenn der Join auf der Gleichheitsbedingung basiert. Beim Zusammenführen von Verknüpfungen müssen sich die Verknüpfungszeilen auf demselben AMP befinden. Zeilen werden basierend auf ihrem Zeilen-Hash verbunden. Merge Join verwendet verschiedene Join-Strategien, um die Zeilen auf denselben AMP zu bringen.
Strategie Nr. 1
Wenn die Verknüpfungsspalten die Primärindizes der entsprechenden Tabellen sind, befinden sich die Verknüpfungszeilen bereits auf demselben AMP. In diesem Fall ist keine Verteilung erforderlich.
Betrachten Sie die folgenden Mitarbeiter- und Gehaltstabellen.
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);
Wenn diese beiden Tabellen in der Spalte EmployeeNo verknüpft werden, erfolgt keine Umverteilung, da EmployeeNo der Primärindex der beiden Tabellen ist, die verknüpft werden.
Strategie 2
Betrachten Sie die folgenden Mitarbeiter- und Abteilungstabellen.
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 );
Wenn diese beiden Tabellen in der Spalte DeparmentNo verknüpft sind, müssen die Zeilen neu verteilt werden, da DepartmentNo ein Primärindex in einer Tabelle und ein Nicht-Primärindex in einer anderen Tabelle ist. In diesem Szenario befinden sich die Verbindungszeilen möglicherweise nicht auf demselben AMP. In diesem Fall kann Teradata die Mitarbeitertabelle in der Spalte "DepartmentNo" neu verteilen.
Strategie 3
Für die oben genannten Mitarbeiter- und Abteilungstabellen kann Teradata die Abteilungstabelle auf allen AMPs duplizieren, wenn die Größe der Abteilungstabelle klein ist.
Verschachtelter Join
Nested Join verwendet nicht alle AMPs. Damit der verschachtelte Join stattfinden kann, sollte eine der Bedingungen die Gleichheit des eindeutigen Primärindex einer Tabelle sein und diese Spalte dann mit einem beliebigen Index der anderen Tabelle verknüpfen.
In diesem Szenario ruft das System die eine Zeile mithilfe des eindeutigen Primärindex einer Tabelle ab und verwendet diesen Zeilen-Hash, um die übereinstimmenden Datensätze aus einer anderen Tabelle abzurufen. Der verschachtelte Join ist die effizienteste aller Join-Methoden.
Produkt verbinden
Product Join vergleicht jede qualifizierende Zeile aus einer Tabelle mit jeder qualifizierenden Zeile aus einer anderen Tabelle. Der Produktbeitritt kann aufgrund einiger der folgenden Faktoren erfolgen:
- Wo Bedingung fehlt.
- Die Join-Bedingung basiert nicht auf der Gleichheitsbedingung.
- Tabellen-Aliase sind nicht korrekt.
- Mehrere Beitrittsbedingungen.