web-dev-qa-db-ja.com

行数とともにSybaseのすべてのユーザーテーブルを一覧表示する方法

すべてのテーブルとその横にある数を返したいのですが。それについて行く最も速い方法は何ですか?

オラクルでは、以下のようなことができますが、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;
8
Neerav

上記を実行する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
20
Neerav

これは、Sybase製品の意味によって異なります。私のSQL Anywhere(9および11)では、ソリューションは機能しませんが、これは機能します。

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

現在のユーザーが作成者の場合:

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

注:私はこれをSybase ASA 9でテストします。

3
Paul Vargas

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
2
Rajkaran Mishra

以下のクエリを使用

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

sysobjects ob、systabstats stからob.name、st.rowcntを選択します。ここで、b.type = 'U'およびst.id = ob.idおよびindid = 0は、ob.nameの順序です。

0
Srinath408

これは、SQL Anywhere 17で「SQL Central」を使用する場合に機能します。

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