我的任务是清理数据库中无用的记录。在规划中,首先我必须检查哪些表保存了最多的记录。我知道我可以手动一一检查它们,但是表列表太长,我认为在检查是否有任何自动查询可以完成这项工作之前手动运行它们不太明智。 手动,我可以使用以下查询查询每个表:
select count(*) from <table_name>
即使使用sysobjects,我也找不到当前的记录数
select * from sysobjects s where type='U' and name = '<table_name>'
有人有想法吗?
最佳答案
每个表中行数的近似值将作为索引统计信息的一部分保留,并存储在 yourDB..systabstats
中假设您运行 updatestatistics
定期进行,以下是获取信息的方法。
SELECT o.name, t.rowcnt
FROM sysobjects o, systabstats t
WHERE o.id = t.id
AND t.rowcnt > 0 --ignore 0 row entries
AND o.name not like "sys%" --exclude system tables
ORDER BY t.rowcnt DESC
关于sql - 查询表按记录数最多排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21606535/