【问题标题】:what is the difference between collect statistics multi column or single column in teradatateradata中收集统计信息多列或单列有什么区别
【发布时间】:2018-07-10 11:34:48
【问题描述】:
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 中,这两种收集统计数据的方式有什么区别?两者的优缺点是什么?

【问题讨论】:

  • 如果我们必须从这两种情况中选择哪个更好?
  • @RakshitSakhuja - 这取决于。您没有提供有关该表或访问该表的查询模式的足够信息。您可能会发现有必要同时拥有两组统计信息,以便优化器构建有效的查询。

标签: sql teradata teradata-sql-assistant


【解决方案1】:

在您经常执行的查询中,如果您在搜索条件中同时使用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 将多列统计信息视为索引统计信息。

【讨论】:

    【解决方案2】:

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

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

    SELECT *
    FROM MyTable
    WHERE column1 = 'James Bond'
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多