В этой статье блога мы рассмотрим различные методы подсчета количества строк во всех таблицах с помощью сценариев T-SQL. Независимо от того, являетесь ли вы разработчиком SQL, администратором базы данных или просто интересуетесь написанием сценариев SQL, это руководство предоставит вам несколько подходов к выполнению этой задачи. Итак, давайте углубимся и узнаем о различных способах подсчета строк во всех таблицах с помощью T-SQL!
Метод 1: использование представлений sys.tables и sys.dm_db_partition_stats
Один простой метод — использовать представления sys.tables и sys.dm_db_partition_stats. Представление sys.tables содержит информацию обо всех таблицах в базе данных, а представление sys.dm_db_partition_stats предоставляет статистику на уровне разделов. Объединив эти представления и суммируя количество строк, мы можем получить общее количество строк для каждой таблицы.
SELECT t.name AS TableName, SUM(p.rows) AS RowCount
FROM sys.tables t
JOIN sys.dm_db_partition_stats p ON t.object_id = p.object_id
WHERE t.type = 'U' -- U denotes user-defined tables
GROUP BY t.name
ORDER BY RowCount DESC;
Метод 2. Использование системной хранимой процедуры sp_MSforeachtable.
Другой метод предполагает использование системной хранимой процедуры sp_MSforeachtable, которая позволяет выполнить конкретный оператор T-SQL для каждой таблицы в базе данных.
EXEC sp_MSforeachtable 'SELECT ''?'' AS TableName, COUNT(*) AS RowCount FROM ?';
Метод 3: динамический SQL с курсором
Если вы предпочитаете более динамичный подход, вы можете использовать курсор для перебора всех таблиц и выполнить оператор динамического SQL для подсчета строк.
DECLARE @TableName NVARCHAR(128);
DECLARE @RowCount INT;
DECLARE tableCursor CURSOR FOR
SELECT name FROM sys.tables WHERE type = 'U';
OPEN tableCursor;
FETCH NEXT FROM tableCursor INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('SELECT ''' + @TableName + ''' AS TableName, COUNT(*) AS RowCount FROM ' + @TableName);
FETCH NEXT FROM tableCursor INTO @TableName;
END;
CLOSE tableCursor;
DEALLOCATE tableCursor;
Метод 4: информационная схема
INFORMATION_SCHEMA — это системное представление, которое предоставляет метаданные обо всех объектах в базе данных. Вы можете использовать это представление для подсчета строк во всех таблицах.
SELECT TABLE_NAME AS TableName, TABLE_ROWS AS RowCount
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
Метод 5: временное сохранение счетчиков в таблице
Если вам необходимо часто запрашивать количество строк, вы можете создать таблицу для хранения счетчиков и периодически обновлять ее с помощью запланированного задания или триггера. Этот метод позволяет избежать необходимости подсчитывать строки во всех таблицах каждый раз, когда вам нужна информация, что повышает производительность.