Подсчет строк сразу для всех таблиц

Я использую SQL Server 2005 и хотел бы знать, как получить список всех таблиц с количеством записей в каждой.

Я знаю, что могу получить список таблиц с помощью представления sys.tables, но не могу найти счетчик.

Спасибо

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
16
0
35 296
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Возможно что-то вроде этого:

SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows) 
FROM 
    sysobjects so, 
    sysindexes si 
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
    2 DESC

http://web.archive.org/web/20080701045806/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-get-a-list-of-sql-server-tables-and- их-строки-counts.html

Ответ принят как подходящий

Отсюда: http://web.archive.org/web/20080701045806/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-get-a-list-of-sql-server-tables-and- их-строки-counts.html

SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows) 
FROM 
    sysobjects so, 
    sysindexes si 
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
    2 DESC

Просто из любопытства, какой цели служит ORDER BY 2 DESC?

jleach 23.06.2016 02:22

@ jdl134679 он заказывает мой rowCount, причем сначала таблица с большинством строк

Steve 31.05.2017 15:38

@jleach Да, см. документы в ORDER BY. «Столбец сортировки может быть указан как имя или псевдоним столбца или неотрицательное целое число, представляющее позицию столбца в списке выбора».

Alex Budovski 16.05.2018 00:11

Я мог бы добавить, что sysindexes.rows - это приблизительное количество строк. Я бы запустил DBCC UPDATEUSAGE, если вам нужно более точное значение. У нас была эта проблема в БД с таблицами, содержащими более 47-50 миллионов строк, и мы думали, что потеряли около полумиллиона от каждой из них.

DBCC UPDATEUSAGE, похоже, не решает здесь все возможные проблемы. Я попробовал update statistics dbo.table_name with rowcount = 100000, pagecount = 100000, DBCC исправил ложное вручную установленное количество страниц, но не количество ложных строк (но я думаю, это очень крайний случай!)
Martin Smith 01.04.2011 04:29

Как бы то ни было, системная таблица sysindexes устарела в SQL 2008. Вышеупомянутое все еще работает, но вот запрос, который будет работать в будущем с системными представлениями SQL 2008.

select
schema_name(obj.schema_id) + '.' + obj.name,
row_count
from (
    select
        object_id,
        row_count = sum(row_count)
    from sys.dm_db_partition_stats
    where index_id < 2  -- heap or clustered index
    group by object_id
) Q
join sys.tables obj on obj.object_id = Q.object_id

Это именно то, что я хотел (после того, как я поставил несколько условий WHERE после соединения.)

Wes 14.01.2013 19:45

Это мой метод:

create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable 
   'insert into #rowcount select ''?'', count(*) from ?'
select * from #rowcount
    order by tablename
drop table #rowcount

работает как шарм

Кажется, что он медленнее, чем другие варианты, хотя может быть более точным.

Jonathan Allen 11.06.2014 02:37

Все эти способы дадут вам количество строк в результирующем наборе запроса на выборку. SSMS также дает вам возможность просмотреть подробную информацию об объекте через: Панель «Сведения об обозревателе объектов». Это доступно для 2005 и всех последующих версий.

Сведения об обозревателе объектов - это компонент SQL Server Management Studio. Он обеспечивает табличное представление всех объектов на сервере и представляет собой пользовательский интерфейс для управления ими.

Чтобы перейти в «Окно сведений об объекте»: Щелкните Объект, сведения о котором необходимо просмотреть, на панели «Обозреватель объектов» и нажмите F7. Подробнее: https://technet.microsoft.com/en-us/library/ms191146(v=sql.90).aspx

Плюсы:

  1. Намного быстрее, чем запрос выбора, поскольку SQL Server хранит эту информацию
  2. Не нужно каждый раз писать / копировать и вставлять запрос выбора - вам всего одна клавиша F7.
  3. Предоставляет гораздо больше информации, а не только о количестве строк

Примечание: у вас может не быть счетчика строк на панели сведений об объекте по умолчанию, вы можете щелкнуть заголовок столбца и ввести его.

Другие вопросы по теме