sp_createstats (Transact-SQL)

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

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

sp_createstats 对于查询执行时间至关重要且无法等待查询优化器生成单列统计信息的应用程序(例如基准测试)非常有用。 在大多数情况下,不需要使用 sp_createstats;查询优化器会根据需要生成单列统计信息,以在选项打开时 AUTO_CREATE_STATISTICS 改进查询计划。

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

Transact-SQL 语法约定

语法

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

参数

[ @indexonly = ] 'indexonly'

仅针对现有索引中的列创建统计信息,并且不是任何索引定义中的第一列。 @indexonly为 char(9),默认值为 NO.

[ @fullscan = ] 'fullscan'

CREATE STATISTICS 语句与选项一起使用 FULLSCAN@fullscan为 char(9),默认值为 NO.

[ @norecompute = ] 'norecompute'

CREATE STATISTICS 语句与选项一起使用 NORECOMPUTE@norecomputechar(12),默认值为 NO.

[ @incremental = ] 'incremental'

CREATE STATISTICS 语句与选项一起使用 INCREMENTAL = ON@incrementalchar(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