Щоб вивести список всіх не системних таблиць та кількість рядків в них і просортувати рядки від більшого до меншого в PostgreSQL 16, ви можете використовувати наступний SQL-запит:
SELECT
table_name,
row_count
FROM (
SELECT
table_name,
row_count
FROM (
SELECT
table_name,
row_count,
ROW_NUMBER() OVER (ORDER BY row_count DESC) AS rn
FROM (
SELECT
table_name,
pg_total_relation_size(`public.` || table_name) / 8192 AS row_count
FROM information_schema.tables
WHERE table_schema = `public` AND table_type = `BASE TABLE`
AND table_name NOT LIKE `pg_%`
AND table_name NOT IN (`information_schema`, `pg_stat_statements`, `pg_buffercache`)
) AS subquery
) AS subquery_with_row_number
WHERE rn <= 10 -- Показати топ 10 таблиць за кількістю рядків
) AS top_tables
ORDER BY row_count DESC;
Цей запит робить наступне:
pg_total_relation_size
.Запит виведе список таблиць та кількість рядків в них у порядку від більшого до меншого. Вам може знадобитися змінити значення rn
в WHERE rn <= 10
, якщо ви хочете вивести іншу кількість таблиць у результатах.
Для отримання кількості записів в кожній таблиці в PostgreSQL 14, ви можете використовувати наступний SQL-запит:
SELECT schemaname, tablename, (xpath(`/row/cnt/text()`, xml_count))[1]::text::int AS row_count
FROM (
SELECT schemaname, tablename,
query_to_xml(format(`SELECT count(*) as cnt FROM %I.%I`, schemaname, tablename), false, true, ``) AS xml_count
FROM pg_tables
) AS counts
ORDER BY schemaname, tablename;
Цей запит використовує функцію pg_tables
для отримання списку таблиць у базі даних і генерує SQL-запити для підрахунку кількості записів в кожній таблиці. Результат буде містити назву схеми, назву таблиці та кількість записів в кожній таблиці.
Зверніть увагу, що цей запит працює у схемі за замовчуванням. Якщо ви працюєте в інших схемах, замініть 'public'
на відповідну назву схеми у запиті.
Запускайте цей SQL-запит у вашій PostgreSQL 14 базі даних, і він повинен повернути кількість записів в кожній таблиці.
Автор: Рудюк С.А. 2023. K2 Cloud ERP.