是在加载数据完成之后还是之前创建索引更高效,还是没关系?
例如,假设我有 500 个文件要加载到 Postgres 8.4 数据库中。以下是我可以使用的两个索引创建方案:
- 创建表时创建索引,然后将每个文件加载到表中;或者
- 在所有文件都加载到表中后创建索引。
表数据本身约为 45 GB。该索引约为 12 GB。我正在使用标准索引。它是这样创建的:
CREATE INDEX idx_name ON table_name (column_name);
我的数据加载使用COPY FROM。
加载所有文件后,表上将不会发生更新、删除或额外加载(这是一天的数据不会改变)。所以我想问哪种方案最有效?初步测试似乎表明加载所有文件然后创建索引(场景2)更快,但我没有对这两种方法进行科学比较。