首页 > 解决方案 > Teradata:查询连接索引表的主索引列时不使用连接索引

问题描述

我为表员工创建了一个连接索引,

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. 首先,我们锁定一个独特的 customerservice.“伪表”以在 RowHash 上读取,以防止 customerservice.employee 的全局死锁。
  2. 接下来,我们锁定 customerservice.employee 以供读取
  3. 我们通过使用条件为 ("customerservice.employee.last_name = 'Brown '") 的全行扫描从 customerservice.employee 执行全 AMP 检索步骤,进入 Spool 1 (group_amps),该 Spool 1 (group_amps) 本地构建在安培。Spool 1 的大小估计为 2 行(286 字节),这是不可信的。此步骤的估计时间为 0.07 秒。
  4. 最后,我们向参与处理请求的所有 AMP 发送一个 END TRANSACTION 步骤。

-> Spool 1 的内容作为语句 1 的结果返回给用户。总估计时间为 0.07 秒。

从Explain的结果来看,join index emp_ji not used,有点迷茫,

标签: indexingteradata

解决方案


推荐阅读