查询统计信息可以使用sys.sysindexes目录视图,表级统计信息保存在其rows及dpages两个列,列级统计信息保存在其statblob列中,这是一个blob类型字段。
查询表级统计信息:
sysindexes中的name列,存储索引的名称,对于 表,name列为空,indid为0,这时可以通过sysindexes中的id列及indid列作为查询条件获得指定表的统计信息。
1> select object_name(id) obj_name, dpages, rows
2> from sys.sysindexes
3> where indid=0 and id=object_id('t')
4> go
obj_name dpages rows
--------------- ----------- -----------
t 9 2208
如果表上创建了聚簇索引,则sysindexes中不再保存表的统计信息,而只能查到其聚簇索引的统计信息,这时其indid列的值为1,如果是非聚簇索引,则其indid列的值大于1。要查询索引(包括聚簇与非聚簇索引)的统计信息,可以使用下面命令:
1> select object_name(id) obj_name, name, indid, dpages, rows
2> from sys.sysindexes
3> where name='idx_clu'
4> go
obj_name name indid dpages rows
-------------- ---------------- -------- ----------- -----------
t idx_clu 1 7 2208
查询列级统计信息:
dbcc show_statistics(表名, 列名)
或者
dbcc show_statistics(表名, 统计名称)
这里要注意,列级统计信息可能还未创建,也有可能列级统计信息是过时的。
查询表上已经创建的统计信息名称:
sp_helpstats 表名
或者
sp_helpstats 表名, 'all'
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-997841/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/37724/viewspace-997841/
本文介绍如何使用sys.sysindexes目录视图查询SQL Server中的表级和列级统计信息,包括未创建聚簇索引的表统计信息、聚簇索引统计信息及列级统计信息的查询方法。

被折叠的 条评论
为什么被折叠?



