sp_createstats (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

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

在查询执行时间很重要并且不能等待查询优化器以生成单列统计信息时,sp_createstats 对于基准确定之类的应用程序十分有用。 在大多数情况下,无需使用sp_createstats:打开 “AUTO_CREATE_STATISTICS ”选项时,查询优化器会根据需要生成单列统计信息以改进查询计划。

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

Transact-SQL 语法约定

语法

  
sp_createstats   
    [   [ @indexonly =   ] { 'indexonly'   | 'NO' } ]   
    [ , [ @fullscan =    ] { 'fullscan'    | 'NO' } ]   
    [ , [ @norecompute = ] { 'norecompute' | 'NO' } ]  
    [ , [ @incremental = ] { 'incremental' | 'NO' } ]  

参数

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

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

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

[ @incremental = ] 'incremental'使用具有 INCREMENTAL = ON 选项的 CREATE STATISTICS 语句。 增量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)