我向PostgreSQL表添加了Unique约束和Check约束。
现在,当我检查该表的详细信息时,“索引”下列出了唯一性约束,而没有检查约束。
为什么这种行为?
在此处查看文档:https://www.postgresql.org/docs/12/ddl-constraints.html#DDL-CONSTRAINTS-UNIQUE-CONSTRAINTS
添加唯一约束将在约束中列出的列或一组列上自动创建唯一的B树索引。仅覆盖某些行的唯一性限制不能写为唯一性约束,但是可以通过创建唯一的部分索引来强制执行这种限制。
您在Indexes下看到UNIQUE是因为创建了唯一的B树索引。
为UNIQUE约束创建索引,因为它是检查大型表的值是否唯一的一种有效方法:您必须检查表中的所有行以确保该值是唯一的。不会为CHECK约束创建索引,因为不存在性能问题:您只需要检查当前行的列值-无需检查表中的所有行。