我对关联表中的两列有一个唯一约束,例如:
CREATE TABLE PersonImage (
id serial PRIMARY KEY,
person_id integer REFERENCES Person (id),
image_id integer REFERENCES Image (id),
CONSTRAINT person_image_uc UNIQUE (person_id, image_id));
约束是否独立地为person_id
和image_id
创建索引,还是创建统一索引?
我的目标通过创建索引可以更快地搜索person_id
和image_id
,但如果是这样,我不想创建更多的开销在约束中自动完成。
答案 0 :(得分:1)
这在功能上等同于:
create unique index unq_personimage_person_image on personimage(person_id, image_id);
唯一索引用于实现约束。因为约束在两列中,两者都必须在索引中。
答案 1 :(得分:1)
UNIQUE
约束几乎,但与同一列中相同列的UNIQUE
索引不完全相同。但是有一些细微的差别。
请参阅:
实际上,您可以使用约束在(person_id, image_id)
上获得单个多列唯一索引。由于 想要独立搜索image_id
,因此请在(image_id)
或(image_id, person_id)
上添加其他索引。详细解释: