MS SQL Server. Как узнать количество записей в таблицах по всей БД.

Для оптимизации производительности БД часто приходиться изучать какие таблицы в БД наиболее «нагружены» (содержат в себе большое количество записей).

Чтобы определить количество записей в каждой таблице по всей БД поможет 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 запроса (скрипта) будет список таблиц с указанием количества строк в таблице, отсортированный по убыванию:

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. Алексей

    Это просто бомба ;-)
    Спасибо!

    1. Никита (автор)

      Алексей, рад, что был полезен.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.