【问题标题】:Azure SQL Data Warehouse CTAS statisticsAzure SQL 数据仓库 CTAS 统计信息
【发布时间】:2017-02-26 12:55:13
【问题描述】:

SQL 数据仓库中的“创建表为”功能是在后台创建统计信息,还是必须手动创建(就像我在执行普通的“创建表”语句时那样?)

【问题讨论】:

    标签: azure-sqldw


    【解决方案1】:

    在当前版本中,您总是必须在表上创建列级统计信息,无论它是使用普通 CREATE TABLE 还是 CTAS CREATE TABLE AS... 命令创建的。为 JOIN、WHERE 子句、GROUP BY、ORDER BY 和 DISTINCT 子句中使用的列创建统计信息也是一种很好的做法。

    关于使用 CTAS 创建的表,数据库引擎对sys.partitions 中列出的表中有多少行有正确的认识,但在列级别的统计信息级别上没有。对于CREATE TABLE 创建的表,默认为 1,000 行。对于下面的示例,第一个表是使用 CTAS 创建的,有 208 行,第二个表使用第一个表中的普通 CREATE TABLEINSERT,也有 208 行,但 sys.partitions 认为它有 1,000例如

    手动创建任何列级统计信息将更正此数字。

    总之,无论表是如何创建的,始终手动创建重要列的统计信息。

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2016-05-01
      相关资源
      最近更新 更多