0
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 中两者的优缺点是什么?

4

2 回答 2

2

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

于 2018-02-01T10:36:45.030 回答
0

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

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

SELECT *
FROM MyTable
WHERE column1 = 'James Bond'

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

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

于 2018-02-01T14:14:26.460 回答