В этой главе рассматриваются различные стратегии 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 невелик.
Вложенное соединение
Nested Join не использует все AMP. Для выполнения вложенного соединения одним из условий должно быть равенство уникального первичного индекса одной таблицы, а затем присоединение этого столбца к любому индексу другой таблицы.
В этом случае система извлекает одну строку, используя уникальный первичный индекс одной таблицы, и использует этот хэш строки для извлечения совпадающих записей из другой таблицы. Вложенное соединение — самый эффективный из всех методов соединения.
Регистрация продукта
Product Join сравнивает каждую подходящую строку из одной таблицы с каждой подходящей строкой из другой таблицы. Присоединение продукта может происходить из-за следующих факторов: