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

问题描述 投票:0回答:1

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

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

例:

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)  

请帮帮我吧。

postgresql-9.3
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.