5. 统计信息的创建
1)可以使用以下语句创建统计信息:
CREATE STATISTICS ON < table_name > [ .
参数:
table_name
指定要创建的统计信息所基于的表的名称。
index_name
要创建的统计信息所基于的索引。如果未指定索引,则为表中的所有索引创建统计信息。
FULLSCAN
指定收集统计信息时应读取表或视图中的所有行。
NORECOMPUTE
指定应禁用统计信息的自动重新计算功能。如果指定此选项,即使数据发生更改,数据库引擎 也将仍然继续使用旧的统计信息。数据库引擎不自动更新和维护统计信息,这可能生成不理想的统计计划。(不建议使用此参数)
2)通过系统存储过程sp_createstats,可以为当前数据库中所有用户表的所有合格列和内部表创建单列统计信息。新的统计信息与创建该统计信息所在列具有相同的名称。(需要 db_owner 固定数据库角色成员资格。
)
语法如下:
sp_createstats [ [ @indexonly = ] 'indexonly' ]
[ , [ @fullscan = ] 'fullscan' ]
[ , [ @norecompute = ] 'norecompute' ]
参数:
[ @indexonly = ] 'indexonly'
指定创建统计信息时只应考虑参与索引的列。indexonly 的数据类型为 char(9)。默认值为 NO。
[ @fullscan = ] 'fullscan'
指定将 FULLSCAN 选项用于 CREATE STATISTICS。如果忽略 fullscan,SQL Server 2005 Database Engine 将执行默认示例扫描。fullscan 的数据类型为 char(9)。默认值为 NO。
[ @norecompute = ] 'norecompute'
指定对新创建的统计信息禁用统计信息自动重新计算功能。norecompute 的数据类型为 char(12)。默认值为 NO。
已经包含统计信息的列不会受影响,如索引的第一列或包含显式创建的统计信息的列。对于每个满足上述限制的列,将执行 CREATE STATISTICS 语句。如果指定了 fullscan 则执行 FULLSCAN。
对于被禁用的索引的前导列,将不会对其创建统计信息。如果指定了 indexonly,那么,除非其他启用的索引也使用了已禁用的非聚集索引中的列,否则不会对该列创建统计信息。sp_createstats 会忽略包含已禁用聚集索引的表。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10640532/viewspace-515941/,如需转载,请注明出处,否则将追究法律责任。