Postgresql中有重复索引有什么害处吗?

Mat*_*udy 7 sql postgresql indexing postgresql-9.1

我有以下结构.

CREATE TABLE join_table (
  id integer NOT NULL,
  col_a integer NOT NULL,
  col_b integer NOT NULL
)

CREATE INDEX index_on_col_a ON join_table USING btree (col_a);
CREATE INDEX index_on_col_b ON join_table USING btree (col_b);
CREATE UNIQUE INDEX index_on_col_a_and_col_b ON join_table USING btree (col_a, col_b);
Run Code Online (Sandbox Code Playgroud)

col_a和col_b上也有外键.

显然index_on_col_a不再需要,但是保留或删除它是否有成本或好处?

我的猜测是;

  • 保持它会减慢插入速度
  • col_a如果我保留它,选择使用just 可能会更快

ckr*_*use 6

您可以删除索引col_a.PostgreSQL是能够使用组合索引如果查询的col_a,也是可以使用索引,如果你查询的col_acol_b.这些查询类型可以使用组合索引:

WHERE col_a = 'val'
WHERE col_a = 'val' AND col_b = 'val'
Run Code Online (Sandbox Code Playgroud)

将合并的索引不能仅用于查询col_bORcol_acol_b.因此,col_b如果您经常只查询查询,则附加索引可能有意义col_b.

编辑:所以:你没有创造优势index_on_col_a,但你的写入速度较慢.算了吧.