非唯一索引不用于对与它们关联的表强制执行约束。相反,非唯一索引通过维护频繁使用的数据值的排序顺序,仅仅用于提高查询性能。

包括和排除 NULL 键

可创建唯一索引和非唯一索引,以便当键的所有列或表达式为空时不将该键插入到索引对象中。对于您不希望查询访问与空键相关联的数据的情况,排除空键可以使存储和性能优化得到改进。对于唯一索引,强制执行表数据的唯一性将忽略其中的索引键为空的行。

主键或唯一键约束与唯一索引之间的差别

了解主键约束或唯一键约束与唯一索引之间没有很大差别这一点很重要。为了实现主键约束和唯一键约束的概念,数据库管理器使用唯一索引与 NOT NULL 约束的组合。因此,唯一索引本身不强制执行主键约束,因为它们允许空值。虽然空值表示未知值,但在建立索引时,会将一个空值视为与其他空值相同。
因此,如果唯一索引由单个列组成,那么只允许一个空值 - 多个空值将违反唯一约束。类似地,如果唯一索引由多个列组成,那么值与空值的特定组合只能使用一次。