Teradata - стратегии JOIN

В этой главе обсуждаются различные стратегии JOIN, доступные в Teradata.

Методы соединения

Teradata использует разные методы соединения для выполнения операций соединения. Некоторые из часто используемых методов соединения:

  • Слияние Присоединиться
  • Вложенное соединение
  • Присоединение к продукту

Слияние Присоединиться

Метод Merge Join имеет место, когда соединение основано на условии равенства. Объединение слиянием требует, чтобы соединяемые строки находились на одном 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);

Когда эти две таблицы объединяются в столбце EmployeeNo, перераспределение не происходит, поскольку EmployeeNo является основным индексом обеих таблиц, которые соединяются.

Стратегия # 2

Рассмотрим следующие таблицы сотрудников и отделов.

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

Если эти две таблицы объединены в столбце DeparmentNo, то строки необходимо перераспределить, поскольку DepartmentNo является первичным индексом в одной таблице и непервичным индексом в другой таблице. В этом случае объединяемые строки могут не относиться к одному и тому же AMP. В таком случае Teradata может перераспределить таблицу сотрудников по столбцу DepartmentNo.

Стратегия # 3

Для приведенных выше таблиц Employee и Department Teradata может дублировать таблицу Department на всех AMP, если размер таблицы Department небольшой.

Вложенное соединение

Вложенное соединение использует не все AMP. Для выполнения вложенного соединения одним из условий должно быть равенство уникального первичного индекса одной таблицы и последующее присоединение этого столбца к любому индексу другой таблицы.

В этом сценарии система будет извлекать одну строку с использованием уникального первичного индекса одной таблицы и использовать этот хэш строки для извлечения совпадающих записей из другой таблицы. Вложенное соединение - самый эффективный из всех методов соединения.

Присоединение к продукту

Объединение продуктов сравнивает каждую подходящую строку из одной таблицы с каждой соответствующей строкой из другой таблицы. Присоединение продукта может произойти из-за некоторых из следующих факторов:

  • Где условие отсутствует.
  • Условие соединения не основано на условии равенства.
  • Псевдонимы таблиц неверны.
  • Множественные условия соединения.