Teradata - 统计信息



Teradata 优化器会为每个 SQL 查询提出一个执行策略。此执行策略基于在 SQL 查询中使用的表上收集的统计信息。表上的统计信息是使用 COLLECT STATISTICS 命令收集的。优化器需要环境信息和数据人口统计信息才能制定出最佳的执行策略。

环境信息

  • 节点、AMP 和 CPU 数量
  • 内存容量

数据人口统计信息

  • 行数
  • 行大小
  • 表中值的范围
  • 每个值的行数
  • 空值数量

有三种方法可以收集表上的统计信息。

  • 随机 AMP 采样
  • 完整统计信息收集
  • 使用 SAMPLE 选项

收集统计信息

COLLECT STATISTICS 命令用于收集表上的统计信息。

语法

以下是收集表上统计信息的的基本语法。

COLLECT [SUMMARY] STATISTICS   
INDEX (indexname) COLUMN (columnname) 
ON <tablename>;

示例

以下示例收集 Employee 表的 EmployeeNo 列的统计信息。

COLLECT STATISTICS COLUMN(EmployeeNo) ON Employee;

执行上述查询后,会生成以下输出。

*** Update completed. 2 rows changed. 
*** Total elapsed time was 1 second.

查看统计信息

您可以使用 HELP STATISTICS 命令查看收集的统计信息。

语法

以下是查看收集的统计信息的语法。

HELP STATISTICS <tablename>; 

示例

以下是如何查看 Employee 表上收集的统计信息的示例。

HELP STATISTICS employee;

执行上述查询后,会生成以下结果。

  Date       Time      Unique Values           Column Names 
--------   -------- -------------------- ----------------------- 
16/01/01   08:07:04         5                       * 
16/01/01   07:24:16         3                   DepartmentNo 
16/01/01   08:07:04         5                   EmployeeNo
广告