我在没有索引的 Postgres 表上有一个大型数据库导入(100GB)。
导入后,我想尽快为查询创建索引。只要索引未准备好,就不会访问表中的数据。
建立索引的最快方法是什么?我必须在 3 列(两列varchar
,一列date
)上建立索引。创建索引大约需要2个小时,这真的没有用。
有什么办法可以加快索引的创建吗?在数据导入之前设置索引可能不是更好,因为这会减慢导入速度?
我知道 Postgres 可以选择“不加锁”创建索引,但这不会降低性能,因为它使 Postgres 能够在创建索引时访问数据?
这是一个虚拟机。服务器的内存可以根据我的需要增加。目前我有32GB。work_mem
并且maintenance_work_mem
仍处于默认配置值。我没有用于数据库的 SSD。这肯定会加快速度吗?
我没有任何boolean
可用于部分索引的标志或类似标志。事实上,我希望表中的每一行都被索引。