Teradata: индекс соединения не должен использоваться при запросе столбца первичного индекса таблицы индекса соединения - PullRequest
0 голосов
/ 05 мая 2018

Я создаю индекс соединения для сотрудника таблицы,

CREATE JOIN INDEX a.EMP_JI  AS
SELECT a.employee_number,
       a.department_number ,
       a.last_name,          
       a.manager_employee_number
       FROM customerservice.employee a
       PRIMARY INDEX ( last_name );

и затем я запрашиваю таблицу customerservice.employee так:

explain sel * from customerservice.employee where last_name = 'Brown';

результат:

Объяснение

  1. Во-первых, мы блокируем отдельную службу поддержки клиентов. «Псевдотаблица» для чтения в RowHash, чтобы предотвратить глобальную тупиковую ситуацию для customerservice.employee.
  2. Далее мы блокируем customerservice.employee для чтения
  3. Мы выполняем шаг восстановления всех AMP из customerservice.employee путем сканирования всех строк с условием ("customerservice.employee.last_name = 'Brown'") в Spool 1 (group_amps), который создается локально на AMP. Размер буфера 1 оценивается без уверенности в 2 ряда (286 байт). Расчетное время для этого шага составляет 0,07 секунды.
  4. Наконец, мы отправляем шаг END TRANSACTION всем AMP, участвующим в обработке запроса.

-> Содержимое буфера 1 отправляется обратно пользователю в результате оператора 1. Общее расчетное время составляет 0,07 секунды.

Из результатов объяснения, индекс соединения emp_ji не используется, немного запутан,

...