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