Eu gostaria de entender melhor quando a cobertura de índices pode ser útil para possibilitar varreduras somente de índice no Postgres 11+. Como diz a documentação , dado o índice de cobertura
CREATE INDEX tab_x_y ON tab(x) INCLUDE (y);
consultas como esta podem usá-lo para varreduras somente de índice:
SELECT y FROM tab WHERE x = 'key';
Agora estou me perguntando se esse índice de cobertura também poderia permitir varreduras somente de índice quando as colunas de cobertura aparecerem como condições. Por exemplo, suponha um índice de cobertura:
CREATE INDEX tab_x_y_z ON tab(x) INCLUDE (y, z);
Isso permitiria verificações somente de índice para as seguintes consultas?
SELECT z FROM tab WHERE x = 'key' AND y = 1;
SELECT x, y, z FROM (VALUES ('key1'),('key2'),('key3')) sub(id)
JOIN tab ON tab.x = sub.id WHERE y = 1;
Eu deveria ter tentado um pouco mais primeiro. Agora que executo alguns exemplos, parece que sim, todas as consultas acima podem usar uma varredura somente de índice . Assim que uma coluna fora do índice de cobertura é mencionada, um método de acesso regular é usado (por exemplo, um id de varredura de índice, um índice de ajuste está em vigor).
Seria bom se a documentação do Postgres deixasse isso mais claro (ou eu ignorei as informações).