sp_createstats (Transact-SQL)

调用 CREATE STATISTICS 语句,为不是统计信息对象中的第一列的列创建单列统计信息。 创建单列统计信息会增加直方图的数目,这可能会改进基数估计、查询计划和查询性能。 统计信息对象的第一列具有直方图;其他列没有直方图。

如果查询执行时间很重要,并且不能等待查询优化器生成单列统计信息,则 sp_createstats 对基准确定等应用程序非常有用。 大多数情况下,无需使用 sp_createstats;在将 AUTO_CREATE_STATISTICS 选项设置为 ON 时,查询优化器根据需要生成单列统计信息以改进查询计划。

有关统计信息的详细信息,请参阅统计信息。 有关如何生成单列统计信息的详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL) 中的 AUTO_CREATE_STATISTICS 选项。

主题链接图标 Transact-SQL 语法约定

语法

sp_createstats [ [ @indexonly = ] 'indexonly' ] 
    [ , [ @fullscan = ] 'fullscan' ] 
    [ , [ @norecompute = ] 'norecompute' ]

参数

  • [ @indexonly= ] 'indexonly'
    仅对位于现有索引中并且不是任何索引定义中的第一列的列创建统计信息。 indexonly 为 char(9)。 默认值为 NO。

  • [ @fullscan= ] 'fullscan'
    CREATE STATISTICS 语句与 FULLSCAN 选项一起使用。 fullscan 为 char(9)。 默认值为 NO。

  • [ @norecompute= ] 'norecompute'
    CREATE STATISTICS 语句与 NORECOMPUTE 选项一起使用。 norecompute 为 char(12)。 默认值为 NO。

返回代码值

0(成功)或 1(失败)

结果集

每个新统计信息对象的名称与创建该统计信息的列相同。

注释

sp_createstats 将不会为属于现有统计信息对象中的第一列的那些列创建或更新统计信息。这包括为索引创建的统计信息的第一列、具有使用 AUTO_CREATE_STATISTICS 选项生成的单列统计信息的列以及使用 CREATE STATISTICS 语句创建的统计信息的第一列。 sp_createstats 将不会为禁用的索引的第一列创建统计信息,除非该列用于其他启用的索引。 sp_createstats 将不会为具有禁用的聚集索引的表创建统计信息。

如果表包含列集,则 sp_createstats 不会为稀疏列创建统计信息。 有关列集和稀疏列的详细信息,请参阅使用列集使用稀疏列

权限

要求具有 db_owner 固定数据库角色的成员身份。

示例

A.为所有适于统计的列创建单列统计信息

下面的示例将为当前数据库中所有适于统计的列创建单列统计信息。

EXEC sp_createstats;
GO

B.对所有适于统计的索引列创建单列统计信息

下面的示例将为已处于索引中且不是索引中的第一列的所有适于统计的列创建单列统计信息。

EXEC sp_createstats 'indexonly';
GO

请参阅

参考

CREATE STATISTICS (Transact-SQL)

ALTER DATABASE SET 选项 (Transact-SQL)

DBCC SHOW_STATISTICS (Transact-SQL)

DROP STATISTICS (Transact-SQL)

UPDATE STATISTICS (Transact-SQL)

数据库引擎存储过程 (Transact-SQL)

系统存储过程 (Transact-SQL)

概念

统计信息