CREATE STATISTICS

本文介绍如何使用Transact-SQL的CREATE STATISTICS语句基于一列或多列创建统计信息,包括采用全扫描或抽样方式收集数据的方法,并提供禁用自动重新计算统计的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Transact-SQL 参考

CREATE STATISTICS

基于给出的一列或一组列创建柱状图和关联的密度组(集合)。

语法

CREATE STATISTICS statistics_name 
ON { table view 
} column ,...)
    
[ WITH
        [ [ FULLSCAN
            | SAMPLE number { PERCENT | ROWS } ] [ ] ]
        [ NORECOMPUTE ] 
    ]

参数

statistics_name

是要创建的统计组的名称。统计名称必须符合标识符规则。

table

是要在其上创建命名统计的表名。表名必须符合标识符规则。table 是与 column 关联的表。可以选择是否指定表所有者的名称。通过指定合法的数据库名称,可以在其它数据库中的表上创建统计。

view

是要在其上创建命名统计的视图名。必须在具有聚集索引的视图上创建统计。视图名必须符合标识符规则。view 是与 column 关联的视图。可以选择是否指定视图所有者名称。通过指定合法的数据库名称,可以在其它数据库中的视图上创建统计。

column

是要在其上创建统计的一列或一组列的名称。不能将计算列和 ntexttext 或 image 数据类型的列指定为统计列。

n

是表示可以指定多列的占位符。

FULLSCAN

指定应读取 table 中的所有行以收集统计信息。指定 FULLSCAN 具有与 SAMPLE 100 PERCENT 相同的行为。此选项不能与 SAMPLE 选项一起使用。

SAMPLE number { PERCENT | ROWS }

指定应使用随机采样来读取一定百分比或指定行数的数据以收集统计信息。number 只能为整数:如果是 PERCENT,number 应介于 0 到 100 之间;如果是 ROWS,number 可以是从 0 到 n 的总行数。

此选项不能与 FULLSCAN 选项一起使用。如果没有给出 SAMPLE 或 FULLSCAN 选项,Microsoft® SQL Server™ 会计算出一个自动样本。

NORECOMPUTE

指定应禁用统计的自动重新计算功能。如果指定了该选项,那么即使数据更改,SQL Server 仍将继续使用以前创建的(旧)统计。SQL Server 不自动更新和维护统计,这将使生成的计划可能不是最佳的。

 

警告  建议不要轻易使用该选项,只有训练有素的系统管理员才应使用该选项。

 

注释

只有表的所有者才能在该表上创建统计。不管表中是否有数据,表的所有者都可以在任何时候创建统计组(集合)。

CREATE STATISTICS 可以在带聚集索引的视图或索引视图上执行。只有在查询直接引用视图并为该视图指定了 NOEXPAND 提示的情况下,优化程序才会使用索引视图的统计。否则,在查询计划代入索引视图之前,统计由基础表导出。这种代入仅在 Microsoft SQL Server 2000 企业版和开发版中受支持。

权限

CREATE STATISTICS 权限默认授予 sysadmin 固定服务器角色成员或 db_ddladmin 和 db_owner 固定数据库角色成员以及表的所有者且不可转让。

示例
A. 使用带 SAMPLE number PERCENT 的 CREATE STATISTICS

下例创建 names 统计组(集合),该组基于 Customers 表中 CompanyName 和 ContactName 列的百分之五的数据计算随机采样统计。

CREATE STATISTICS names
   ON Customers (CompanyName, ContactName)
   WITH SAMPLE 5 PERCENT
GO
B. 使用带 FULLSCAN 和 NORECOMPUTE 的 CREATE STATISTICS

下例创建 names 统计组(集合),该组基于 Customers 表中 CompanyName 和 ContactName 列的所有行计算统计,并禁用统计的自动重新计算功能。

CREATE STATISTICS names
   ON Northwind..Customers (CompanyName, ContactName)
   WITH FULLSCAN, NORECOMPUTE
GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值