Azure SQL 数据仓库 CTAS 统计信息

Azure SQL Data Warehouse CTAS statistics

SQL Data Warehouse 中的 "Create table as" 函数是在后台创建统计信息,还是必须手动创建(就像我在执行普通 "Create table" 语句时所做的那样) ?)

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

关于使用 CTAS 创建的 tables,数据库引擎正确地知道 sys.partitions 中列出的 table 中有多少行,但不是列 - level 统计级别。对于 CREATE TABLE 创建的 table,默认为 1,000 行。对于下面的示例,第一个 table 是使用 CTAS 创建的并且有 208 行,第二个 table 使用普通的 CREATE TABLE 和第一个 table 的 INSERT ] 也有 208 行,但 sys.partitions 认为它有 1,000 行,例如

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

总而言之,无论 table 是如何创建的,始终针对重要列手动创建统计信息。