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

Mat*_*ins 17 postgresql indexing unique-index unique-constraint

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

这个?

CREATE UNIQUE INDEX mytable_col1_col2_idx ON mytable (col1, col2);
Run Code Online (Sandbox Code Playgroud)

或这个?

CREATE UNIQUE INDEX mytable_col1_col2_uidx ON mytable (col1, col2);
CREATE INDEX mytable_col1_col2_idx ON mytable (col1, col2);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 28

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

文档:

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

强调我的.

  • 另请注意,每个字段上的唯一索引与两个字段上的唯一索引不同.如果您需要在每个单独的字段上单独使用唯一索引,则两个col索引不会这样做. (7认同)