Em geral, acho que o uso extensivo de
UNION
sugere um design de banco de dados ruim. Há casos em que UNION
e UNION ALL
fazem sentido, mas devem ser relativamente raros fora das expressões recursivas de tabelas comuns. O PostgreSQL fornece um número bastante grande de opções para manter o desempenho em uma única tabela gerenciável e, como você apontou, índices parciais são uma maneira muito boa de gerenciar esse problema.
O maior problema em dividir tabelas de tal forma que
UNION
declarações são comuns é que torna o gerenciamento de chaves primárias e estrangeiras bastante problemático. Em geral, é quase sempre muito melhor garantir que sua estrutura de dados seja clara e gerenciável primeiro e depois se preocupar com a otimização do que se preocupar com a otimização e tentar tornar a solução otimizada gerenciável.