sql - 查询表按记录数最多排序

标签 sql sybase sap-ase

我的任务是清理数据库中无用的记录。在规划中,首先我必须检查哪些表保存了最多的记录。我知道我可以手动一一检查它们,但是表列表太长,我认为在检查是否有任何自动查询可以完成这项工作之前手动运行它们不太明智。 手动,我可以使用以下查询查询每个表:

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/

相关文章:

sap-ase - 如果存在非空或默认值的更改表语句不起作用

mysql - 未知列 where 子句

c# - 为什么 GUID uniqueidentifier 显示值略有不同

sybase - 如何在sybase ase中添加前导零

sybase - 如何清除sybase 15.7中的事务日志?

sql-server - 区分 Sybase ASE 和 Microsoft SQL Server

mysql查询用户的每个体验id都有一行

mysql - 如何用一条sql检查多条记录的列值是否相同

sql - 自动创建数百个索引