CREATE INDEX alias_pub_idx2
ON info.palias
USING btree
(publisher_id, player_id, pub_player_id);
CREATE INDEX alias_pub_idx3
ON info.palias
USING btree
(player_id);
第一列包括三列;后者仅包括一个。我认为它们是多余的 - 第一个btree索引就足够了,但我对PostgreSQL索引方法并不十分熟悉。想法?
答案 0 :(得分:9)
PostgreSQL多列索引是“有序”的,这意味着只有当player_id
是alias_pub_idx2
中提到的第一列时,这才是多余的。
然而,这将是多余的:
CREATE INDEX alias_pub_idx2
ON info.palias
USING btree
(publisher_id, player_id, pub_player_id);
CREATE INDEX alias_pub_idx3
ON info.palias
USING btree
(publisher_id); /* first column of another index => waste of space */
答案 1 :(得分:0)
这两个索引都没有使另一个多余 - 如果publisher_id不是一个标准,那么查找特定player_ids的info.palias查询将优先于第一个索引。
答案 2 :(得分:0)
使用btree
BTREE indexes are ordered,这就是你的第二个索引是多余的原因:第一列是相同的,可以在所有查询中使用,其中player_id是一个条件。