Способи підрахунку кількості записів в кожній з таблиць бази даних

У цій статті розглядаються кілька способів, за допомогою яких можна підрахувати кількість записів в таблицях бази даних 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 ?”

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*