我们错误地在同一列上创建了两个相同的索引,但是当我们检查索引的大小时,两个不同的后来丢弃了一个索引。
想要检查尺寸显示不同的原因。
示例:
create index index1 on table1 using btree(column1);
create index index2 on table1 using btree(column1);
pega=> select pg_size_pretty(pg_table_size('index1'));
pg_size_pretty
----------------
100 MB
(1 row)
select pg_size_pretty(pg_table_size('index2'));
pg_size_pretty
----------------
70 MB
(1 row)
请帮我解决这个问题。
答案 0 :(得分:0)
这将在创建第一个索引后发生,如果在该表上执行任何DML操作,它将占用死元组并且大小将增加,现在如果您创建相同的索引,则该列大小将显示与第一个索引不同。
完成真空吸尘后,尺寸显示相同。
的示例:
mydb=# select pg_size_pretty(pg_table_size('idx1'));
pg_size_pretty
----------------
6600 kB
(1 row)
mydb=# select pg_size_pretty(pg_table_size('idx2'));
pg_size_pretty
----------------
2208 kB
(1 row)
mydb=# vacuum full temp1;
VACUUM
mydb=# select pg_size_pretty(pg_table_size('idx1'));
pg_size_pretty
----------------
2208 kB
(1 row)
mydb=# select pg_size_pretty(pg_table_size('idx2'));
pg_size_pretty
----------------
2208 kB
(1 row)