PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Tamanho do índice PostgreSQL e número do valor


pg_table_size('index_name') para índice individual - mas mostrará apenas o tamanho no disco, não a quantidade de dados

count(*) para obter a montagem atual exata de linhas

sum(pg_column_size(column_name)) from table_name para estimativas sobre a quantidade de dados da coluna

você pode tentar você mesmo assim:
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)

e para verificar como o psql obtém o tamanho do índice individual, execute-o com psql -E ..

e mais uma vez - as funções acima trabalham com o tamanho do disco - pode/(pode não) ser extremamente diferente da quantidade real de dados. aspirar ajuda aqui

atualizar Não sei onde você obtém diretamente o número de "linhas" no índice, portanto, pode oferecer apenas uma maneira indireta. Por exemplo, deixe-me ter um índice parcial, então "número de linhas" é diferente da tabela. Posso verificar as estimativas com EXPLAIN (é claro que você precisa repetir a cláusula where para isso) verificando as rows=66800 em Index Only Scan using me dá uma idéia do número de linhas nesse índice (na verdade é rows=64910 que você pode obter explain analyze ou apenas executando count(*) ). Não consigo encontrar informações relevantes em pg_stats - talvez haja alguma fórmula. Não sei.