我应该同时指定INDEX和UNIQUE INDEX吗?

时间:2010-12-25 21:07:25

标签: postgresql indexing unique-constraint unique-index

在我的一个PostgreSQL表中,我有一组两个字段,它们将在表中定义为唯一,但在选择数据时也会同时使用。鉴于此,我是否只需要定义一个UNIQUE INDEX,或者除了UNIQUE INDEX之外还应该指定一个INDEX吗?

此?

CREATE UNIQUE INDEX mytable_col1_col2_idx ON mytable (col1, col2);

还是这个?

CREATE UNIQUE INDEX mytable_col1_col2_uidx ON mytable (col1, col2);
CREATE INDEX mytable_col1_col2_idx ON mytable (col1, col2);

1 个答案:

答案 0 :(得分:27)

如果你有一个独特的索引,那么你也不需要INDEX - 这将是多余的。 UNIQUE INDEX既是唯一约束,也是可以像任何其他索引一样使用的索引。

来自documentation

  

注意:向表中添加唯一约束的首选方法是ALTER TABLE ... ADD CONSTRAINT。使用索引来强制执行唯一约束可以被视为不应直接访问的实现细节。但是,应该知道无需在唯一列上手动创建索引;这样做只会复制自动创建的索引。

强调我的。