Способы подсчета количества записей в каждой из таблиц базы данных
В этой стате рассматриваются несколько способов, с помощью которых
можно подсчитать количество записей в таблицах базы данных 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 ?"
Источник: www.infocity.kiev.ua
|