【问题标题】:PostgreSQL Btree index on top of Unique index唯一索引之上的 PostgreSQL Btree 索引
【发布时间】:2020-10-13 05:14:41
【问题描述】:

我有一个具有唯一索引的表。

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

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

那么我还需要在 ID 列上建立索引吗?还是唯一索引本身索引了该列?

【问题讨论】:

    标签: sql postgresql unique


    【解决方案1】:

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

    SELECT *
    FROM task
    WHERE id = 3;
    

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

    【讨论】:

    • 非常感谢,如果我在user='something'@ 处做同样的索引将起作用
    • 不。那不能使用您的索引(或者至少不太可能使用该索引)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2020-10-01
    • 2015-04-24
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多