Uma solicitação sql é executada 10 vezes mais com Postgresql do que com Oracle. Como podemos acelerar essa consulta com o Postgresql?
Segue o pedido:
select t1.c1, t1.c2 from MyTable t1
where t1.c3='string'
and t1.c2=(select max(t2.c2) from MyTable t2 where t2.c4=t1.c4);
A consulta completa:
select t1.c1, t1.c2 from MyTable t1
left outer join Table t3
on t1.c1=t3.c1
where t1.c3='string'
and t1.c2=(select max(t2.c2) from MyTable t2 where t2.c4=t1.c4);
No Postgres esse tipo de consulta é muito mais eficiente quando feito usando
distinct on ()
Alternativamente, usando SQL padrão e uma função de janela:
Se você não puder alterar a consulta porque ela é gerada por uma camada de ofuscação (também conhecida como "ORM"), adicionar a coluna
c3
ao índiceidx_multi_c2_c4
e criar um índice(c1,c3)
pode ajudar.