Teradata - estratégias JOIN

Este capítulo discute as várias estratégias JOIN disponíveis no Teradata.

Métodos de junção

O Teradata usa diferentes métodos de junção para realizar operações de junção. Alguns dos métodos de junção comumente usados ​​são -

  • Unir juntar
  • Junção aninhada
  • Product Join

Unir juntar

O método Merge Join ocorre quando a junção é baseada na condição de igualdade. Merge Join requer que as linhas de junção estejam no mesmo AMP. As linhas são unidas com base em seu hash de linha. Merge Join usa diferentes estratégias de junção para trazer as linhas para o mesmo AMP.

Estratégia # 1

Se as colunas de junção forem os índices primários das tabelas correspondentes, as linhas de junção já estarão na mesma AMP. Nesse caso, nenhuma distribuição é necessária.

Considere as seguintes tabelas de empregados e salários.

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 essas duas tabelas são unidas na coluna EmployeeNo, nenhuma redistribuição ocorre, pois EmployeeNo é o índice primário de ambas as tabelas que estão sendo unidas.

Estratégia # 2

Considere as seguintes tabelas de funcionários e departamentos.

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 essas duas tabelas forem unidas na coluna DeparmentNo, as linhas precisarão ser redistribuídas, pois o DepartmentNo é um índice primário em uma tabela e um índice não primário em outra. Nesse cenário, a junção de linhas pode não estar no mesmo AMP. Nesse caso, a Teradata pode redistribuir a tabela de funcionários na coluna DepartmentNo.

Estratégia # 3

Para as tabelas de Funcionário e Departamento acima, o Teradata pode duplicar a tabela de Departamento em todos os AMPs, se o tamanho da tabela de Departamento for pequeno.

Junção aninhada

O Nested Join não usa todos os AMPs. Para que a Junção aninhada ocorra, uma das condições deve ser igualdade no índice primário exclusivo de uma tabela e, em seguida, juntar essa coluna a qualquer índice da outra tabela.

Nesse cenário, o sistema buscará uma linha usando o índice Primário Único de uma tabela e usará esse hash de linha para buscar os registros correspondentes de outra tabela. A junção aninhada é o mais eficiente de todos os métodos de junção.

Product Join

O Product Join compara cada linha qualificada de uma tabela com cada linha qualificada de outra tabela. A junção do produto pode ocorrer devido a alguns dos seguintes fatores -

  • Onde falta condição.
  • A condição de associação não é baseada na condição de igualdade.
  • Os aliases da tabela não estão corretos.
  • Várias condições de junção.