PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Indexação avançada envolvendo condições OR-ed (pgsql)


Dependendo das condições, pode ser logicamente impossível usar qualquer índice para ajudar uma condição complexa usando OR expressões.

Como MySQL, PostgreSQL 8.0 e estados anteriores em seus documentos sobre índices :

Com o PostgreSQL 8.1, isso alterado .

No entanto, se isso não ajudar, você pode usar o UNION solução que você tentou (esta é uma solução comum para usuários do MySQL, que continua a ter uma limitação de um índice por tabela).

Você deve ser capaz de ordenar os resultados de um UNION consulta, mas você precisa usar parênteses para especificar que ORDER BY aplica-se ao resultado do UNION , não apenas para a última subconsulta na cadeia.
(SELECT ... )
UNION
(SELECT ... )
UNION
(SELECT ... )
ORDER BY columnname;

Eu espero que isso ajude; Não sou especialista no otimizador do PostgreSQL. Você pode tentar pesquisar os arquivos da lista de discussão , ou perguntando no canal de IRC .