Unique vs Check约束

问题描述 投票:0回答:2

我向PostgreSQL表添加了Unique约束和Check约束。

现在,当我检查该表的详细信息时,“索引”下列出了唯一性约束,而没有检查约束。

为什么这种行为?

sql postgresql rdbms
2个回答
1
投票

在此处查看文档:https://www.postgresql.org/docs/12/ddl-constraints.html#DDL-CONSTRAINTS-UNIQUE-CONSTRAINTS

添加唯一约束将在约束中列出的列或一组列上自动创建唯一的B树索引。仅覆盖某些行的唯一性限制不能写为唯一性约束,但是可以通过创建唯一的部分索引来强制执行这种限制。

您在Indexes下看到UNIQUE是因为创建了唯一的B树索引。


0
投票

为UNIQUE约束创建索引,因为它是检查大型表的值是否唯一的一种有效方法:您必须检查表中的所有行以确保该值是唯一的。不会为CHECK约束创建索引,因为不存在性能问题:您只需要检查当前行的列值-无需检查表中的所有行。

© www.soinside.com 2019 - 2024. All rights reserved.