电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > 数据库 > 正文
[图文]分享SQL快速统计表记录总数的SQL语句
分享SQL快速统计表记录总数的SQL语句
2010-12-21 11:24:58  文/huyong   出处:电脑软硬件应用网   

  本文和大家分享一些Sql技巧,如快速得到表的记录总数,一起看看。

  判断某一个表的记录总数,对于一个开发者来说是最再常见不过的事,我想大家都常用的作法就是:  

select count(*) from 表名;

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

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

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

  三、用户要求等等。

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

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

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

  打开SqlServer,执行如下语句:

1 useAdventureWorks
2  select id,object_name(id) as tableName,indid,rows,rowcnt
3  from sys.sysindexes where indid in(0,1)

  得到:   

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新热点 最新推荐 相关文章
    详解如何查找SQL数据库自增ID值不连…
    SQL重建索引重新释放掉字段因更改而…
    SQL教程:SQL Server备份和灾难恢复
    SQL注入攻击:防御和检查SQL注入的手…
    SQL Server日志文件丢失 进行恢复方…
    解决安装SQL Server出现command lin…
    Windows 7下如何安装SQL Server 200…
    详解SQL数据仓库之时间维度创建的开…
    解答SQL不许在视图定义ORDER BY子句…
    解答SQL不许在视图定义ORDER BY子句…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号