Teradata - estrategias de JOIN

Este capítulo analiza las diversas estrategias JOIN disponibles en Teradata.

Métodos de unión

Teradata utiliza diferentes métodos de combinación para realizar operaciones de combinación. Algunos de los métodos de unión más utilizados son:

  • Fusionar unión
  • Unión anidada
  • Producto unido

Fusionar unión

El método Merge Join tiene lugar cuando la combinación se basa en la condición de igualdad. Merge Join requiere que las filas de unión estén en el mismo AMP. Las filas se unen en función de su hash de fila. Merge Join utiliza diferentes estrategias de combinación para llevar las filas al mismo AMP.

Estrategia # 1

Si las columnas de unión son los índices principales de las tablas correspondientes, las filas de unión ya están en el mismo AMP. En este caso, no se requiere distribución.

Considere las siguientes tablas de empleados y salarios.

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);

Cuando estas dos tablas se unen en la columna EmployeeNo, no se realiza ninguna redistribución ya que EmployeeNo es el índice principal de ambas tablas que se unen.

Estrategia # 2

Considere las siguientes tablas de empleados y 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 );

Si estas dos tablas se unen en la columna DeparmentNo, entonces las filas deben redistribuirse ya que DepartmentNo es un índice principal en una tabla y un índice no principal en otra tabla. En este escenario, es posible que las filas unidas no estén en el mismo AMP. En tal caso, Teradata puede redistribuir la tabla de empleados en la columna DepartmentNo.

Estrategia # 3

Para las tablas de empleados y departamentos anteriores, Teradata puede duplicar la tabla de departamentos en todos los AMP, si el tamaño de la tabla de departamentos es pequeño.

Unión anidada

La unión anidada no usa todas las AMP. Para que tenga lugar la unión anidada, una de las condiciones debe ser la igualdad en el índice principal único de una tabla y luego unir esta columna a cualquier índice de la otra tabla.

En este escenario, el sistema buscará una fila usando el índice principal único de una tabla y usará ese hash de fila para buscar los registros coincidentes de otra tabla. La combinación anidada es el más eficaz de todos los métodos de combinación.

Producto unido

Product Join compara cada fila calificada de una tabla con cada fila calificada de otra tabla. La unión de productos puede tener lugar debido a algunos de los siguientes factores:

  • Donde falta la condición.
  • La condición de unión no se basa en la condición de igualdad.
  • Los alias de la tabla no son correctos.
  • Múltiples condiciones de unión.