2015-02-23 3 views
1

Каков наиболее эффективный способ подсчета количества строк в моей базе данных?Получить количество строк в каждой таблице в базе данных Postgres

Я использую базу данных Postgres.

Пример Результат

table_name  row_count 
------------ ------------- 
some_table  1,234 
foobar   5,678 
another_table 32 
... 
+0

количество строк в этой таблице ... –

+1

Please l ook here: [количество строк в postgres] (http://stackoverflow.com/questions/2596670/how-do-you-find-the-row-count-for-all-your-tables-in-postgres) и [sysobjects in postgres] (http://stackoverflow.com/questions/13024539/alternative-to-sql-servers-sysobjects-in-postgresql) – Hockenberry

+0

Спасибо @Hockenberry - странно, что он не появился в поиске для меня! Я закрыл этот вопрос, но у него есть ответ –

ответ

0

если вы хотите сверку perticular таблицы, то он будет работать

SELECT reltuples FROM pg_class WHERE oid = 'my_schema.my_table'::regclass; 

reltuples столбец из pg_class таблицы, она содержит данные о «количестве строк> в таблице. Это только оценка, используемая планировщиком.

и если ваш нужен список всех таблиц с его ROWCOUNT тогда он будет выполнять работу

SELECT 
    pgClass.relname AS tableName, 
    pgClass.reltuples AS rowCount 
FROM 
    pg_class pgClass 
LEFT JOIN 
    pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace) 
WHERE 
    pgNamespace.nspname NOT IN ('pg_catalog', 'information_schema') AND 
    pgClass.relkind='r' 

«Почему„SELECT COUNT () FROM Bigtable;“ медленный»: count()

+0

Почему LEFT JOIN, когда вы делаете его INNER JOIN? –

2

Для общего количества строк всей использования базы данных это

SELECT 
    SUM(pgClass.reltuples) AS totalRowCount 
FROM 
    pg_class pgClass 
LEFT JOIN 
    pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace) 
WHERE 
    pgNamespace.nspname NOT IN ('pg_catalog', 'information_schema') AND 
    pgClass.relkind='r' 

И строки счета для конкретных таблиц в той же базе данных идут для этого

SELECT 
    pgClass.relname AS tableName, 
    pgClass.reltuples AS rowCount 
FROM 
    pg_class pgClass 
LEFT JOIN 
    pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace) 
WHERE 
    pgNamespace.nspname NOT IN ('pg_catalog', 'information_schema') AND 
    pgClass.relkind='r' 

Для ссылка здесь link

Смежные вопросы