24

在我的一个 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);
4

1 回答 1

42

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

文档中:

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

强调我的。

于 2010-12-25T21:10:51.467 回答