sp_createstats (Transact-SQL)
适用于:SQL Server
Azure SQL 数据库 Azure SQL 托管实例
调用 CREATE STATISTICS 语句,针对尚未成为统计信息对象中的第一列的列创建单列统计信息。 创建单列统计信息会增加直方图的数目,这可能会改进基数估计、查询计划和查询性能。 统计信息对象的第一列具有直方图;其他列没有直方图。
在查询执行时间很重要并且不能等待查询优化器以生成单列统计信息时,sp_createstats 对于基准确定之类的应用程序十分有用。 在大多数情况下,不需要使用 sp_createstats;查询优化器会根据需要生成单列统计信息,以在启用AUTO_CREATE_STATISTICS选项时改进查询计划。
有关统计信息的详细信息,请参阅统计信息。 有关生成单列统计信息的详细信息,请参阅 ALTER DATABASE SET 选项(Transact-SQL)中的AUTO_CREATE_STATISTICS选项。
语法
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 选项配合使用。 fullscan 为 char(9)。 默认值为 NO。
[ @norecompute = ] 'norecompute'
将 CREATE STATISTICS 语句与 NORECOMPUTE 选项配合使用。 norecompute 为 char(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)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈