CREATE STATISTICS statistics_name ON { table_or_indexed_view_name } ( column [ ,...n ] ) [ WHERE ] [ WITH [ [ FULLSCAN | SAMPLE number { PERCENT | ROWS } | STATS_STREAM = stats_stream ] [ , ] ] [ NORECOMPUTE ] ] ; ::= [AND ] ::= | ::= column_name IN (constant ,…) ::= column_name constant ::= IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !<
http://msdn.microsoft.com/zh-cn/library/ms188038.aspx
statistics_name
要创建的统计信息的名称。
table_or_indexed_view_name要对其创建统计信息的表或索引视图的名称。通过指定限定的表名,可以对另一个数据库中的表或索引视图创建统计信息。
column [ ,…n]要在对其创建统计信息的键列或列列表。也可以为统计信息指定任何可指定为索引键列的列,但下列情况除外:
- 不能指定 xml 列。
- 组合的列值的最大允许值可以超出为索引键值规定的 900 个字节的限制。
只有当 ARITHABORT 和 QUOTED_IDENTIFIER 数据库选项设置为 ON 时,才能指定计算列。如果 CLR 用户定义类型支持二进制排序,则可以指定 CLR 用户定义类型列。如果方法具有确定性标记,可以指定定义为用户定义类型的列的方法调用的计算列。有关创建 CLR 用户定义类型的列的详细信息,请参阅 使用 CLR 用户定义类型。
WHERE指定一个表达式,以选择要包含在筛选统计信息中的行。筛选谓词使用简单比较逻辑且不能引用计算列、UDT 列、空间数据类型列或 hierarchyID 数据类型列。比较运算符不允许使用 NULL 文本的比较。请改用 IS NULL 和 IS NOT NULL 运算符。
下面是 Production.BillOfMaterials 表的筛选谓词的一些示例:
WHERE StartDate > '20000101' AND EndDate <= '20000630'
WHERE ComponentID IN (533, 324, 753)
WHERE StartDate IN ('20000404', '20000905') AND EndDate IS NOT NULL
有关详细信息,请参阅筛选统计信息。
FULLSCAN通过扫描表或索引视图中的所有行来计算统计信息。FULLSCAN 和 SAMPLE 100 PERCENT 的结果相同。FULLSCAN 不能与 SAMPLE 选项一起使用。
SAMPLE number { PERCENT | ROWS }在查询优化器创建统计信息时所使用的表或索引视图中的近似行百分比或行数。对于 PERCENT,number 可以介于 0 到 100 之间;对于 ROWS,number 可以介于 0 到总数行之间。如果指定 0 PERCENT 或 0 ROWS,则将创建统计信息对象,但该对象不包含任何统计信息数据。
查询优化器抽样的实际行百分比或行数可能与指定的行百分比或行数不匹配,因为查询优化器对足够多的数据页进行抽样,以确保在统计上具有大量数据样本,并且查询优化器扫描数据页中的所有行。
对于基于默认抽样的查询计划并非最佳的特殊情况,SAMPLE 非常有用。在大多数情况下,不必指定 SAMPLE,这是因为在默认情况下,查询优化器根据需要采用抽样,并以统计方式确定大量样本的大小,以便创建高质量的查询计划。
SAMPLE 不能与 FULLSCAN 选项一起使用。如果未指定 SAMPLE 和 FULLSCAN,查询优化器则默认使用抽样数据并计算样本大小。
NORECOMPUTE禁用对 statistics_name 的自动统计信息更新。如果指定了该选项,那么即使数据发生更改,查询优化器仍将继续使用以前创建的(过期)统计信息,这可能生成非最优计划。
注意: |
---|
建议您尽量少用此选项,并且此选项只能由有资格的系统管理员使用。 |
标识为仅供参考。不提供支持。不保证以后的兼容性。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-607987/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-607987/