Как перечислить все пользовательские таблицы в 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 ответов
вот 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
Это зависит от того, какой продукт Sybase вы имеете в виду. В моем SQL Anywhere (9 и 11) ваше решение не работает, но это работает:
select table_name, count
from systable
where primary_root<>0 and creator=1
order by 1
если текущий пользователь является создателем:
SELECT table_name, count
FROM sys.systable
WHERE creator = user_id()
примечание: Я тестирую это в Sybase ASA 9.
Как может быть несколько записей в 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
используйте следующий запрос
select name,row_count(db_id(),id) as "Rows"
from sysobjects where type='U' order by 2 desc
выберите ob.имя, st.rowcnt из sysobjects ob, systabstats st где b.тип= 'U' и st.id=ob.id и indid=0 порядок по ob.имя
это работает для меня, используя "SQL Central" с SQL Anywhere 17:
SELECT table_name, st.count
FROM systable st
WHERE table_type = 'BASE'