Unique 索引之上的 PostgreSQL Btree 索引

PostgreSQL Btree index on top of Unique index

我有一个带有唯一索引的 table。

CREATE UNIQUE INDEX task_index ON public.task USING btree (id, user);

我的大部分选择都使用 where id=?

所以我还需要 ID 列的索引吗?还是唯一索引本身索引了该列?

您已经创建的唯一索引使用 B 树,其中 id 作为第一个要拆分的字段。该索引应该可用于仅包含 ididuser 的 where 子句。对于前一种情况,请考虑如下查询:

SELECT *
FROM task
WHERE id = 3;

Postgres 可以使用您当前的索引来查找对应于 id = 3 的子树。对于该子树下的所有叶节点,它可以简单地扫描以找到所有匹配的记录。