唯一性索引(unique index),这部分主要是翻译了PostgreSql9.3的官方文档的11.6这一节,翻译加上自己的语言组织,之后会添加更多的内容。
当前只有B-tree索引才能使用唯一性索引,唯一性索引可以使单字段和多字段绑定在一个索引上。
当一个索引被定义为唯一性索引时,那么无论是单字段还是多字段的索引,其涉及到的字段再表中的值是不能重复的,类似于主键和联合主键的意思。需要注意的是null值是不相等的,即第一行某字段为null第二行该字段也为null,那么这两个字段值不相等。
创建唯一性索引的语法:
CREATE UNIQUE INDEX name ON table (column [, ...]);
PostgreSql会自动创建表中具有唯一性约束字段和主键字段的索引,索引的字段就包含这些字段。
注:PostgreSql添加唯一性约束最好是使用ALTER TABLE ... ADD CONSTRAINT。使用索引来实现只是一种实现方式或者实现细节。用户也不需要在主键和存在唯一性约束的字段上去创建唯一性索引,因为这只是一份PostgreSql自动创建的索引的复制。