gpt4 book ai didi

PostgreSQL - 它会在同一张表上使用两个索引吗?

转载 作者:行者123 更新时间:2023-11-29 11:53:33 24 4
gpt4 key购买 nike

假设您有一个包含一些索引的表:

create table mail
(
identifier serial primary key,
member text,
read boolean
);

create index on mail(member_identifier);
create index on mail(read);

如果您现在查询具有单独索引的多个列,它会同时使用两个索引吗?

select * from mail where member = 'Jess' and read = false;

也就是说,PostgreSQL 是否可以决定先使用member 上的索引来获取Jess 的所有邮件,然后使用read 上的索引来获取所有未读邮件,然后将两个结果相交以构建输出集?

我知道您可以有一个包含多个列的索引(在本例中为 (member, read)),但是如果您有两个单独的索引会怎样? PostgreSQL 会只选择一个还是在某些情况下可以同时使用两者?

这不是关于特定查询的问题。这是了解内部结构的一般性问题。

最佳答案

Postgres Documentation about multiple query indexes

文章说它将创建两个索引适用位置的抽象表示,然后合并结果。

To combine multiple indexes, the system scans each needed index and prepares a bitmap in memory giving the locations of table rows that are reported as matching that index's conditions. The bitmaps are then ANDed and ORed together as needed by the query. Finally, the actual table rows are visited and returned.

关于PostgreSQL - 它会在同一张表上使用两个索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com