Postgres:应该在填充表之前还是之后创建索引

时间:2019-09-29 00:44:26

标签: postgresql indexing

我正在建立一个包含小时表的数据库。每个表都在单个copy语句中创建。这些表的目的是保存标准文件中保存的数据的索引摘要,该文件的压缩效果很好。为了记录,这些文件包含Internet流数据。

有时,我们需要搜索一个月以上的文件以查找特定地址,并且一次浏览一个文件需要很长时间,因此,我们的目的是建立每个小时文件的索引,其中列出了该小时的IP地址。要进行搜索,我们会依次浏览感兴趣的时间范围,然后每小时进行一次快速搜索,以查看是否需要解压缩并搜索磁盘上的相应文件。

我正在使用Postgres,因为它本身支持IP地址。因此,对于每个小时,我都会创建一个表,该表的名称与磁盘上的相应文件有关(日期和时间,令人惊讶)。我需要用于源地址和目标地址的索引,但是我应该在使用copy语句加载数据之前或之后创建这些索引。

我猜想另一种表达方式是在加载数据时还是在完成所有操作后一次执行索引会更快。

一旦加载了表,通常在删除表之前永远不会对其进行修改。

1 个答案:

答案 0 :(得分:1)

您使用的是哪种版本的Postgres?

您是否考虑过分区?

是的,在结尾处建立索引应该更快,但这会留下很多细微差别。