Календарь на Май 2024 года: calendar2008.ru/2024/may/
Навигация
Главная »  Sql 

Способы подсчета количества записей в каждой из таблиц базы данных


Источник: realcoding
Способы подсчета количества записей в каждой из таблиц базы данных
В этой стате рассматриваются несколько способов, с помощью которых можно подсчитать количество записей в таблицах базы данных MS SQL Server Способ 1: Поскольку приведенный ниже sql-код для подсчета количества записей использует таблицу sysindexes, его результат зависит от того, была ли обновлена статистика.

T-SQL:

select substring(o.name, 1, 30) Table_Name ,i.rows Number_of_Rows
from sysobjects o
inner join sysindexes i
on (o.id = i.id)
where o.xtype = 'u'
and i.indid < 2
order by o.name

В приведенном примере xtype = 'u' используется для выбора объектов типа "таблица", а использование indid < 2 гарантирует выборку всех таблиц (как имеющих, так и не имеющих индексы).

Способ 2: Следующий sql-код также может быть использован для определения количества записей в таблицах базы данных. Для подсчета числа строк этот sql-код использует функцию агрегации. Обрамление кавычками выбранного названия таблицы необходимо для обработки пробелов в названии (если такие названия существуют).

T-SQL:

SET NOCOUNT ON
   DECLARE tables_cursor CURSOR
      FOR
      SELECT name FROM sysobjects WHERE type = 'U' order by 1
   OPEN tables_cursor
   DECLARE @tablename varchar(50)

   FETCH NEXT FROM tables_cursor INTO @tablename

   WHILE (@@fetch_status <> -1)
   BEGIN
   select @tablename = quotename(@tablename, '[]')
      DECLARE @CMD VARCHAR(100)
      PRINT @TABLENAME
      SELECT @CMD = ' select count(*) from '+@tablename+' '
   EXEC (@CMD)

      FETCH NEXT FROM tables_cursor INTO @tablename
   END
   DEALLOCATE tables_cursor
   SET NOCOUNT OFF

Способ 3: Для решения поставленной задачи можно также использовать недокументированную хранимую процедуру sp_Msforeachtable. Sp_Msforeachtable сканирует все таблицы в определенной базе данных и выполняет указанную sql-команду (ы) для каждой из таблиц. Для подстановки имени таблицы используется символ "?".

T-SQL:

sp_msforeachtable @command1= 'print ''?''', @command2 = "select count(*) from ?"



 

 Выводимые таблицы с хранимым результатом. Часть 1.
 Docsvision показала 100% совместимость с Microsoft SQL Server 2012..
 Утилита SQL*Plus. Создание и выполнение сценариев. Часть III.
 Особенности использования таблиц, организованных по индексу.
 Анализ результатов tkprof.


Главная »  Sql 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.