假设您有一个包含一些索引的表:
create table mail
(
identifier serial primary key,
member text,
read boolean
);
create index on mail(member_identifier);
create index on mail(read);
Run Code Online (Sandbox Code Playgroud)
如果您现在查询具有单独索引的多个列,它是否会使用这两个索引?
select * from mail where member = 'Jess' and read = false;
Run Code Online (Sandbox Code Playgroud)
也就是说,PostgreSQL可以决定首先使用索引member来获取Jess的所有邮件,然后使用索引read来获取所有未读邮件,然后将两个结果相交以构造输出集吗?
我知道你可以拥有一个包含多列的索引((member, read)在本例中为on ),但是如果你有两个单独的索引会发生什么?PostgreSQL会选择一个还是在某些情况下可以同时使用它们?
这不是关于特定查询的问题.理解内部结构是一个普遍的问题.