为什么同一列上的索引大小不同

时间:2018-06-06 01:22:02

标签: postgresql-9.3

我们错误地在同一列上创建了两个相同的索引,但是当我们检查索引的大小时,两个不同的后来丢弃了一个索引。

想要检查尺寸显示不同的原因。

示例:

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)  

请帮我解决这个问题。

1 个答案:

答案 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)