数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL Server得到表记录总数的另类方法


发布日期:2024年06月04日
 
SQL Server得到表记录总数的另类方法

得到一个表的记录总数常用的作法就是:

以下为引用的内容

select count(*) from 表名;

这种做法没做我这儿主要说的是效率问题当一个数据表的记录数不是太多时这样得到记录总数的效率不是问题但试想如果一个表的记录总数超过几百万或者几千万要再用上面的Sql语句得到表的记录总数速度会慢得让人难以忍受有人会说了可以一表上建立聚簇集索引呀不错若在表的某个字段上建立聚簇索引第一次执行该语句的时间和没有索引的时间差不多之后执行上述语句速度很快但如果要经常做增删改操作建立聚簇索引不是一个明智的做法将会极大的影响增删改的速度得到一个数据表的记录总数经常用在以下几个方面

做数据分页时要得到总记录数

判断数据表的记录数是否过大是否需要备份数据

用户要求等等

说了这么多那么到底如何快速得到一个数据表的记录总数呢?答案是利用SqlServer数据库的系统视图syssysindexes

在MS SQL Serverl数据库中每个数据表都在syssysindexes系统表中拥有至少一条记录记录中的rows 或rowcnt字段会定时记录表的记录总数注意是定时这说明了用这个方法得到的总记录数不是一个精确值原因是MsSQL并不是实时更新该字段的值而是定时更新但从实践来看该值和精确值误差不大如果你希望快速粗略估算表的记录总数建议你采用该方法

SQL Server帮助文件对syssysindexes系统视图的说明为当前数据库中的每个索引和表在表中各对应一行说了这么多直接动手操作便一目了然

打开SQL Server执行如下语句:

以下为引用的内容

useAdventureWorks

select idobject_name(id) as tableNameindidrowsrowcnt

from syssysindexes where indid in()

得到:

上一篇:SQL SERVER数据库日志清空图文教程

下一篇:SQL Server上进行表设计时表的主键设计问题