通常我们都需要查询一个表的总行数,很多人都喜欢用select count(*) from Table.如果表数据非常大的话,这样的查询是很耗费时间和资源的。
其实有两个办法可以快速的查询到SQL Server的表数据。
1. sp_spaceused:其中有一列是rows,如果输入的表对象的话,那么就会获得这个表的行数,速度非常快。
rows | char(11) | 表中现有的行数。如果指定的对象是 Service Broker 队列,该列将指示队列中的消息数。 |
2.从sys.sysindexes中获取。其中也有一个列为rowcnt,Counts the total number of inserted, deleted, or updated rows since the last time statistics were updated for the table
使用下面的语句:
---replace the tablename when you use this script
select id,object_name(id) as tableName,indid,rows,rowcnt
from sys.sysindexes where id =object_id('tablename') and indid in(0,1)
通过这个统计结果可能不是太准确,因为系统统计信息有个时间差