我有一个包含1000万个条目的表,其中一个列是电子邮件地址。 我想在这个列上创建一个哈希索引,因为查询都是在相等比较上。
数据库:Postgres 8.3.3
机器:24GB Ram和16芯。
哈希索引创建大约需要51分钟,但是,如果我在电子邮件地址的小写字母上创建哈希索引,则只需不到3分钟!
示例:
create index xyz on table_xyz using hash(email)
:创建此索引需要51分钟create index xyz on table_xyz using hash(lower(email))
:创建此索引需要3分钟。我的maintenance_work_mem设置为16MB。 shared_buffers = 1GB
是什么解释了这种行为?