我在阅读了关于Postgres中索引唯一性是实现细节的文档后,一直试图梳理唯一性和索引之间的关系:
从唯一性得到什么样的索引?考虑到只有btree才能接受唯一约束,并且unique隐式地创建一个索引,那么UNIQUE是否会创建一个btree索引?我不想无意中在哈希索引上运行范围。
所以,根据文档的说法,我将声明事物为唯一,并使用隐式索引 - 或者 - 创建一个索引,并不假设值是唯一的。这样做是否有错误?向表添加唯一约束的首选方法是 ALTER TABLE ... ADD CONSTRAINT。使用索引来强制执行唯一约束可能被认为是不应该直接访问的实现细节。但是,需要注意的是,在唯一列上手动创建索引是没有必要的;这样做只会复制自动创建的索引。
从唯一性得到什么样的索引?考虑到只有btree才能接受唯一约束,并且unique隐式地创建一个索引,那么UNIQUE是否会创建一个btree索引?我不想无意中在哈希索引上运行范围。