Oi Priscila,

> Subject: Re: [pgbr-geral] Otimizar consulta com LEFT JOIN
> To: Comunidade PostgreSQL Brasileira

> Porém, se eu executasse desse jeito que está no exemplo, ele não 
> reclamaria
> que está faltando entrada para a tabela ps e pf no segundo select? E se eu
> colocasse os inners para essas tabelas não precisaria fazer o UNION ALL...
> fiquei confusa.

No segundo select as tabelas PS e PF não precisam ser consultadas porque o 
objetivo da segunda consulta é trazer apenas os registros que não têm 
valores na tabela que as liga com a tabela principal. Essa é a idéia que 
torna reescrever a query algo vantajoso: ao invés de consultar registro a 
registro para ver se tem ou não tem correspondência em cada uma das tabelas 
filhas, eu divido a consulta em duas partes: uma traz primeiro todos os 
registros que *tenham* todas as tabelas filhas, depois junto isso (via UNION 
ALL para não precisar conferir duplicidades) com todos os registros que *não 
têm* nenhum registro nas tabelas filhas. Pela forma como as tabelas se 
interligam, neste caso eu não preciso consultar todas as tabelas filhas, 
pois se não existir a correspondência em uma delas eu já deduzo que as 
outras não se aplicam.

Atenciosamente,

Mozart Hasse 


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a