我有一种情况需要在 Postgres 中创建一个表并添加大约 300 万行。目前,我正在加载所有数据后向一个字段添加索引,但我想知道在加载数据之前(在创建表时)添加索引是否更好、更糟或中性。
当索引应该添加到 Postgres 中的表时,什么被认为是最佳实践?Postgres 是否在事务期间暂停索引?
这与关于连续范围的这个问题非常相似,以及这个关于按顺序数字分组的问题,但不同之处在于序列不是数字。给定以下关系作为密钥对
a -- b -- c e -- f -- g
| /
| /
d
Run Code Online (Sandbox Code Playgroud)
这是带有示例数据的表(也在SQLFiddle 上):
CREATE TABLE relationships (
name varchar(1),
related varchar(1)
);
INSERT INTO relationships (name, related) VALUES
('a', 'a'),
('a', 'b'),
('b', 'b'),
('b', 'a'),
('b', 'c'),
('b', 'd'),
('c', 'c'),
('c', 'b'),
('c', 'd'),
('d', 'd'),
('d', 'c'),
('d', 'b'),
('e', 'e'),
('e', 'f'),
('f', 'f'),
('f', 'e'),
('f', 'g'),
('g', 'g');
Run Code Online (Sandbox Code Playgroud)
产生如下输出的最有效方法是什么:
| group …
Run Code Online (Sandbox Code Playgroud)