Для оптимизации производительности БД часто приходиться изучать какие таблицы в БД наиболее «нагружены» (содержат в себе большое количество записей).
Чтобы определить количество записей в каждой таблице по всей БД поможет SQL запрос:
declare @sql varchar(max),
@tblname sysname,
@tblsch sysname
declare @t table ( tablename sysname, [count] bigint)
DECLARE vendor_cursor CURSOR FOR
select TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'
OPEN vendor_cursor
FETCH NEXT FROM vendor_cursor
INTO @tblsch, @tblname
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql = 'select '''+@tblname +''' as tablename , count(*) as cnt from '+@tblsch+'.'+@tblname
print @sql
insert @t(tablename ,[count])
exec (@sql)
FETCH NEXT FROM vendor_cursor
INTO @tblsch, @tblname
END
CLOSE vendor_cursor
DEALLOCATE vendor_cursor
select * from @t
order by 2 desc
Результатом выполнения SQL запроса (скрипта) будет список таблиц с указанием количества строк в таблице, отсортированный по убыванию:
Это просто бомба
Спасибо!
Алексей, рад, что был полезен.