在我的一个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);
答案 0 :(得分:27)
如果你有一个独特的索引,那么你也不需要INDEX - 这将是多余的。 UNIQUE INDEX既是唯一约束,也是可以像任何其他索引一样使用的索引。
注意:向表中添加唯一约束的首选方法是ALTER TABLE ... ADD CONSTRAINT。使用索引来强制执行唯一约束可以被视为不应直接访问的实现细节。但是,应该知道无需在唯一列上手动创建索引;这样做只会复制自动创建的索引。
强调我的。