如何在Sybase中列出所有用户表及其行数?

时间:2013-08-12 19:40:39

标签: sybase

我想返回所有表格及其旁边的计数。什么是最快捷的方式呢?

我知道在Oracle中,您可以执行以下操作,但不确定Sybase:

declare n number;
begin
   for rec in (select object_name from user_objects where object_type='TABLE')
   loop
     execute immediate 'select count(*) from '||rec.object_name into n;
     dbms_output.put_line (rec.object_name||':'||n);
   end loop;
end;

7 个答案:

答案 0 :(得分:20)

以下是执行上述操作的Sybase sql:

select ob.name,st.rowcnt 
from sysobjects ob, systabstats st 
where ob.type="U"  
and st.id=ob.id 
order by ob.name

答案 1 :(得分:9)

这取决于您所说的Sybase产品。在我的SQL Anywhere(9和11)中,您的解决方案不起作用,但这有效:

select table_name, count
from systable
where primary_root<>0 and creator=1
order by 1

答案 2 :(得分:3)

如果当前用户是创建者:

SELECT table_name, count
  FROM sys.systable
 WHERE creator = user_id()

注意:我在Sybase ASA 9中测试它。

答案 3 :(得分:2)

由于systabstats表中可以有多个条目,因此查询应为:

select ob.name, sum(st.rowcnt)
from sysobjects ob, systabstats st 
where ob.type="U"  
and st.id=ob.id 
group by ob.name
order by ob.name

答案 4 :(得分:0)

使用以下查询

select name,row_count(db_id(),id) as "Rows"
from sysobjects where type='U' order by 2 desc

答案 5 :(得分:0)

从sysobjects ob中选择ob.name,st.rowcnt,systabstats st其中b.type ='U' 和ob.name

的st.id = ob.id和indid = 0顺序

答案 6 :(得分:0)

这适用于我使用&#34; SQL Central&#34;使用SQL Anywhere 17:

SELECT table_name, st.count
FROM systable st 
WHERE table_type = 'BASE'