日期:2014-05-18  浏览次数:20448 次

你们是怎样统计表的总数的?难道也是 SELECT COUNT() ???
当一个表的数据达到百万级后,再用SELECT COUNT() 后会很慢,但是因为要做分页所以总记录数还是要取出来的.
不知道大家有什么好的办法?

目前想到一个方法,就是另做一个表,专门来统计其他表的总记录数的.然后对其他表使用触发器,当insert和delete是更新记录数...

------解决方案--------------------
SQL code
select rows from sysindexes where name='aaaa'

------解决方案--------------------
SQL code
select * from sysindexes where object_name(id)='aaa'

------解决方案--------------------
SQL code
--这种方法得到的结果不准确
select rows from sysindexes where name='TableName'

--count(1)比count(*)快
select count(1) from TableName

------解决方案--------------------
换个写法.
select * from sysindexes where object_id('aaa')=id

要求不太高的话,可以使用.
因为这个的更新不是很准确的.要求高,就自己count
------解决方案--------------------
DBCC UPDATEUSAGE 'database_name','table_name' --报告目录视图中的页数和行数错误并进行更正。
select rows from sysindexes where indid < 2 and rows > 0 and id = object_id( 'tablename ')--查询

这个结果是准确的,跟count一样,效率也高