我们的应用程序有一些表,其中的索引似乎是重复的,例如
CREATE INDEX mytable_myfield_idx on mytable(myfield)
CREATE UNIQUE mytable_myfield_key on mytable(myfield)
例如:
CREATE UNIQUE INDEX campaigns_pkey ON public.campaigns USING btree (id);
CREATE INDEX idx_id_campaigns ON public.campaigns USING btree (id);
问题是,如果您创建唯一索引,这是否也可以完成非唯一索引的工作,即允许快速查询,例如:
SELECT * from campaigns where id = xxx
即在表上同时拥有两个索引有优势吗?
不,它只会因为维护两个索引以及存储两个索引所需的额外空间而受到伤害。 UNIQUE 在 PostgreSQL(以及许多其他数据库)中作为使用约束的索引来实现。来自手册:
添加唯一约束会自动创建唯一的btree 约束中使用的列或列组的索引。