数据库引擎优化顾问建议为我们的一些查询创建一些统计信息。事实证明,其中一些是相同的,只是列顺序在CREATE STATISTICS命令中是不同的。例如:
CREATE STATISTICS [StatName1] ON [dbo].[table1]([column2], [column1])
CREATE STATISTICS [StatName2] ON [dbo].[table1]([column1], [column2])
这些是相同的还是区别对待?
在同一行中,我可以为给定的表组合CREATE STATISTICS命令吗?如果顾问在3个不同查询的同一列上推荐3个不同的统计数据,我可以为所有3个列执行单个创建命令,例如
CREATE STATISTICS [StatName1] ON [dbo].[table1]([column1], [column3])
CREATE STATISTICS [StatName2] ON [dbo].[table1]([column1], [column2])
进入
CREATE STATISTICS [StatName1] ON [dbo].[table1]([column1], [column2], [column3])
由于
答案 0 :(得分:5)
同一列上的多个统计信息无用。只需要一个。 订单无关紧要。
答案 1 :(得分:-1)
我不是专家,但我希望实现类似的功能。
我不确定所选答案中所引用的是哪个版本的MS SQL Server。根据最新文档,情况看起来有所不同:
@Davos指出 根据Microsoft文档,统计信息中的列顺序“非常”相关。这是文档的链接: https://docs.microsoft.com/en-us/sql/relational-databases/statistics/create-statistics?f1url=%3FappId%3DDev15IDEF1%26l%3DEN-US%26k%3Dk(sql13.swb.statistics.propertis.f1)%26rd%3Dtrue&view=sql-server-ver15
以下是文档页面的摘录:
上移: 将选定的列移到统计信息网格中的较早位置。网格中的位置会大大影响统计信息的有效性。