生成数据库指标的简单查询?

时间:2010-11-23 02:16:24

标签: sql database sybase

给一个包含许多表的数据库(Sybase),我想编写一个SQL查询,为每个表计算行数和列数。

不幸的是,我的SQL有点生疏。我可以生成表名:

select name from sysobjects where type = 'U'   

但如何绑定返回到T的数据库:

select count(*) from T

超出我的范围。甚至可以做这种事情吗?

2 个答案:

答案 0 :(得分:3)

我不使用Sybase,但在线文档表明行数在systabstats,且列在syscolumns

SELECT sysobjects.name, 
      (SELECT COUNT(*) FROM syscolumns WHERE syscolumns.id = sysobjects.id) AS cols,
       systabstats.rowcnt
    FROM sysobjects
    JOIN systabstats 
    ON (sysobjects.id = systabstats.id AND sysobjects.type = 'U' AND systabstats.indid = 0)

答案 1 :(得分:2)

正如弗雷特给出了答案,我只是提供一些额外的信息。

内置过程sp_spaceused“tablename”将为您提供所选表的行数,以及它使用的存储空间的详细信息。在没有参数的情况下使用它可以为当前数据库提供整体存储使用。

您可以查看各种系统存储过程中的SQL,以了解它们从何处获取信息。 sp_spaceused和sp_help在这方面对你都有用。他们住在sybsystemprocs数据库中。请注意不要修改任何这些程序。

在互联网上有一个名为sp_rowcount的存储过程的各种版本,它们提供了你所要求的东西(无论如何都是rowcount),但在内部它们等同于来自fredt的select语句。我使用的那个提供索引计数和表锁定方案。我不记得我到底在哪里,所以不要只是分发它以防万一我的版权被打扰。

相关问题