pg_table_size('index_name')
voor individuele index - maar het toont u alleen de grootte op de schijf, niet de hoeveelheid gegevens
count(*)
om de exacte huidige hoeveelheid rijen te krijgen
sum(pg_column_size(column_name)) from table_name
voor schattingen van de hoeveelheid kolomgegevens
je kunt jezelf iets proberen zoals:
t=# \di+ tbl*
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+----------------------+-------+----------+----------------+--------+-------------
public | tbl_pkey | index | postgres | tbl | 156 MB |
public | tbl_unpic | index | postgres | tbl | 46 MB |
public | tbl_x1 | index | postgres | tbl | 57 MB |
(3 rows)
t=# \dt+ tbl
List of relations
Schema | Name | Type | Owner | Size | Description
--------+----------------+-------+----------+-------+-------------
public | tbl | table | postgres | 78 MB |
(1 row)
t=# select pg_size_pretty(pg_total_relation_size('tbl'));
pg_size_pretty
----------------
337 MB
(1 row)
t=# select 78+57+46+156;
?column?
----------
337
(1 row)
en om te controleren hoe psql de individuele indexgrootte krijgt, voer je het uit met psql -E
..
en nogmaals - bovenstaande functies werken met de grootte die nodig is van de schijf - het kan wel / niet extreem verschillen van de werkelijke hoeveelheid gegevens. stofzuigen helpt hier
bijwerken Ik weet niet waar je direct het aantal "rijen" in de index vandaan haalt, dus ik kan het alleen indirect aanbieden. Laat me bijvoorbeeld een gedeeltelijke index hebben, dus "aantal rijen" verschilt van tabel. Ik kan schattingen controleren met EXPLAIN (je moet natuurlijk herhalen waar clausule daarvoor) door de rows=66800
te controleren in Index Only Scan using
geeft me een idee van het aantal rijen in die index (eigenlijk is het rows=64910
die je kunt krijgen door explain analyze
of gewoon count(*)
uitvoeren ). Ik kan geen relevante informatie vinden in pg_stats - misschien is er een formule. Ik weet het niet.