📜  Teradata连接索引

📅  最后修改于: 2021-01-11 11:34:30             🧑  作者: Mango

Teradata连接索引

Teradata连接索引存储预连接的表。连接索引与物化视图相当。

连接索引旨在允许通过访问索引而不是访问并可能连接其基础基表来解决查询。

连接索引包含一个或多个表,并且还提供了预先汇总的数据。连接索引主要用于提高性能。

连接索引是一个索引结构。必须将它们更多地视为具有行级分区,主索引和辅助索引的预聚合,预联接或永久表的添加层。

即使联接索引不能完全覆盖查询,优化器也可以使用它来联接其基础基表,该方法提供了比对基表中的请求中指定的所有列进行扫描更好的查询优化。

连接索引对于汇总基数大的表中的列的查询很有用。这些索引充当预联接表和摘要表的角色,而不会反规范数据库的逻辑设计。实际上,同时,非规范化通常可以提高一个或多个特定查询的性能。

Teradata中提供三种类型的联接索引。

  • 单表联接索引(STJI)
  • 多表联接索引(MTJI)
  • 综合联接指数(AJI)

规则

这是联接索引的一些基本规则,例如:

  • 不允许使用FULL OUTER JOIN。
  • 在LEFT或RIGHT JOIN的内侧必须至少选择一个非空列。
  • OUTER JOIN对于使用Join Index的可能性更好,但对于Aggregate Join Index则不允许。
  • 不允许使用HAVING和QUALIFY关键字。
  • 不允许进行设置操作,例如UNION,INTERSECT和MINUS。
  • 不允许子查询。
  • 联接索引定义的ON子句中的不等式条件是不允许的。
  • 只有<,<=,> =,>运算符是允许的。
  • 在还原基本表或数据库的过程中,连接索引被标记为无效。
  • 每个联接索引每个表最多允许64列。
  • 一个表上最多可以定义32个索引,包括连接索引。
  • UPI仅允许单个表联接索引。
  • 不允许在同一联接索引列上按值排序的NUSI和分区表达式。

单表联接索引

单表联接索引仅从一个基本表创建。它们的目的是使同一个表具有不同的主索引,分区或较小的表(联接索引表),并且要假脱机的列较少。

由于不需要分发或复制,因此可以提高联接的性能。用户将查询基表,但是PE将决定是访问基表还是访问单表联接索引。

句法

以下是JOIN INDEX的语法。

CREATE JOIN INDEX  
AS