Oi Pablo, É pouco provável que o Postgres faça um DISTINCT eficiente, o que recomendo é indexar sua tabela de td_dado_pessoa pela dt_ultima_alteracao mais a chave (e talvez os campos do select) e então no WHERE colocar algo como:
select ...from tb_dado_ore as a inner join th_ore_uf as b on a.co_ore=b.co_ore inner join th_dado_pessoa as c on --*** faça isso com todas as referências à tabela de pessoas c.co_dado_pessoa = b.co_secretario and c.dt_ultima_alteracao = (select max(c2.dt_ultima_alteracao) from th.dado_pessoa as c2 where c2.co_dado_pessoa=c.co_dado_pessoa) --*** inner join... Com isso você não precisa de ORDER BY nem de DISTINCT, facilitando consideravelmente a vida do otimizador. Você precisará testar com os índices que indiquei para ver o que o otimizador faz. Se a distribuição dos teus dados não ajudar o otimizador, posta a estrutura e o EXPLAIN que a gente vê o que dá para fazer. Atenciosamente, Mozart Hasse _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
