Teradata - JOIN strategie
Questo capitolo discute le varie strategie JOIN disponibili in Teradata.
Metodi di unione
Teradata utilizza diversi metodi di join per eseguire operazioni di join. Alcuni dei metodi Join comunemente usati sono:
- Unisci Unisci
- Join annidato
- Prodotto Join
Unisci Unisci
Il metodo Merge Join viene eseguito quando il join è basato sulla condizione di uguaglianza. Merge Join richiede che le righe di join si trovino sullo stesso AMP. Le righe vengono unite in base all'hash delle righe. Merge Join utilizza diverse strategie di join per portare le righe nello stesso AMP.
Strategia n. 1
Se le colonne di join sono gli indici primari delle tabelle corrispondenti, le righe di join si trovano già sullo stesso AMP. In questo caso, non è richiesta alcuna distribuzione.
Considera le seguenti tabelle dei dipendenti e dei salari.
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);
Quando queste due tabelle vengono unite sulla colonna EmployeeNo, non viene eseguita alcuna ridistribuzione poiché EmployeeNo è l'indice principale di entrambe le tabelle che vengono unite.
Strategia n. 2
Considera le seguenti tabelle Employee e 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 );
Se queste due tabelle sono unite nella colonna DeparmentNo, le righe devono essere ridistribuite poiché DepartmentNo è un indice primario in una tabella e un indice non primario in un'altra tabella. In questo scenario, l'unione delle righe potrebbe non trovarsi sullo stesso AMP. In tal caso, Teradata può ridistribuire la tabella dei dipendenti nella colonna DepartmentNo.
Strategia n. 3
Per le tabelle Employee e Department di cui sopra, Teradata può duplicare la tabella Department su tutti gli AMP, se la dimensione della tabella Department è piccola.
Join annidato
Nested Join non utilizza tutti gli AMP. Affinché il join annidato abbia luogo, una delle condizioni dovrebbe essere l'uguaglianza sull'indice primario univoco di una tabella e quindi l'unione di questa colonna a qualsiasi indice sull'altra tabella.
In questo scenario, il sistema recupererà l'unica riga utilizzando l'indice primario univoco di una tabella e utilizzerà quell'hash di riga per recuperare i record corrispondenti da un'altra tabella. Il join annidato è il più efficiente di tutti i metodi Join.
Prodotto Join
Product Join confronta ogni riga qualificante di una tabella con ogni riga qualificante di un'altra tabella. L'unione del prodotto può avvenire a causa di alcuni dei seguenti fattori:
- Dove manca la condizione.
- La condizione di join non si basa sulla condizione di uguaglianza.
- Gli alias di tabella non sono corretti.
- Condizioni di join multiple.