Następująca kwerenda Postgres SQL będzie lista wszystkich tabel ze wszystkich schematów i ich wielkości i wielkości indeksu. Jeśli tabela jest po prostu tabelą indeksu, pojawi się jako indeks 100%.Uproszczenie zapytania Postgres SQL dla aukcji Tabela i indeks?
SELECT schema,
name,
pg_size_pretty(CASE WHEN is_index THEN 0 ELSE s END) AS size,
pg_size_pretty(CASE WHEN is_index THEN s ELSE st - s END) AS index,
CASE WHEN st = 0 THEN 0
WHEN is_index THEN 100
ELSE 100 - ((s*100)/st) END || '%' as ratio,
pg_size_pretty(st) as total
FROM (SELECT *,
st = s AS is_index
FROM (SELECT nspname as schema,
relname as name,
pg_relation_size(nspname || '.' || relname) as s,
pg_total_relation_size(nspname || '.' || relname) as st
FROM pg_class
JOIN pg_namespace ON (relnamespace = pg_namespace.oid)) AS p)
AS pp
ORDER BY st DESC LIMIT 30;
To daje następujące wyniki:
schema | name | size | index | ratio | total
----------------+------------------------+---------+---------+-------+---------
public | conf | 4072 kB | 4360 kB | 52% | 8432 kB
archive | product_param | 4048 kB | 3968 kB | 50% | 8016 kB
public | conf_pkey | 0 bytes | 4320 kB | 100% | 4320 kB
archive | product_value | 1568 kB | 1136 kB | 43% | 2704 kB
public | param_mapping | 1472 kB | 832 kB | 37% | 2304 kB
archive | supplie_price | 944 kB | 896 kB | 49% | 1840 kB
public | product_param_param_id | 0 bytes | 1552 kB | 100% | 1552 kB
archive | product_param_id | 0 bytes | 1536 kB | 100% | 1536 kB
Doszedłem do punktu, w którym nie widzę lasu dla wszystkich drzew, a to zaczyna się trochę nieporęczny.
Zastanawiam się, czy jest coś w tym, że można uprościć lub zwolnionych? Kolumny niekoniecznie muszą pozostać takie same, jeśli zapytanie może być znacznie prostsze.
Zobacz także http://stackoverflow.com/questions/2596624/how-do-you-find-the-dize-size-of-a-postgres-postgresql- table-and-its-indexes. – Vadzim