Eu crio uma tabela com 1 milhão de registros, então eu excluo esses registros. (Comum com algum tipo de lista de processamento.)
CREATE TABLE example (id int PRIMARY KEY);
INSERT INTO example SELECT generate_series(1, 1000 * 1000);
DELETE FROM example;
VACUUM example;
O tamanho do índice permanece no mesmo tamanho de antes da exclusão.
SELECT pg_size_pretty(pg_relation_size(c.oid)) AS size
FROM pg_class c
WHERE oid = 'example_pkey'::regclass;
size
-------
21 MB
(1 row)
Da mesma forma, consultas de detecção de inchaço (por exemplo , ioguix/pgsql-bloat-estimation ) identificam esse índice como extremamente inchado.
Eu não me importo com o uso do disco em si. O desempenho do índice será afetado por seu grande tamanho? Eu deveria estar correndo REINDEX
?