teradata中收集统计信息多列或单列之间的区别是什么

时间:2018-01-31 11:14:04

标签: sql teradata teradata-sql-assistant

collect statistics column(column1,column2,column3) on table ;
and 
collect statistics column(column1) on table ;
collect statistics column(column2) on table ;
collect statistics column(column3) on table ;

两种收集统计数据的方式有什么不同?两者在teradata中的优缺点是什么?

2 个答案:

答案 0 :(得分:2)

如果您在搜索条件中一起使用column1,column2和column3,则在频繁执行的查询中,最好联合使用统计信息。 It will permit the Optimizer to estimate more accurately the number of qualifying rows for queries that specify these columns.如果为这些列集定义了索引。然后Teradata将Multicolumn统计数据视为索引统计数据。

答案 1 :(得分:0)

收集统计信息的目的是帮助优化程序准备更有效的查询计划。收集统计信息可提供#唯一值,每值行数等信息。如果优化程序知道每个步骤必须处理多少行,则会生成更准确,更有效的查询计划。

此查询通过单列访问表数据:

SELECT *
FROM MyTable
WHERE column1 = 'James Bond'

这里只有单列统计信息才有用,因为我们知道大约需要多少行。多列统计信息没有用,因为它提供了列组(column1,column2,column3)的信息。

测试它的一种方法是对查询运行EXPLAIN。检查前/后计划,看看收集不同统计数据如何影响行估计值。