[firebase-br] Union All - não utiliza índice
Carlos Andrade
krlosgilson em gmail.com
Quinta Junho 4 09:45:16 -03 2020
Olá! Tenho uma SP que retorna vários registros de movimentos do
financeiro, os "selects" são feitos em cada tabela por vez e são unidos
com "UNION ALL". Está havendo uma lentidão considerável para retornar os
registros, mesmo que o resultado seja cerca de 20 registros. Cada tabela
possui seus índices corretamente nos campos onde utilizo na cláusula
"where". Já fiz testes fazendo o "select" em cada tabela separadamente e
o retorno é em tempo normal, questão de fração de segundos. Mas na
"procedure" que possui essa união de 6 tabelas, está havendo essa
lentidão, às vezes a aplicação chega a travar. A dúvida é: utilizando
"union all" será que estão está sendo utilizado os índices? Tem alguma
outra forma de juntar estes resultados para ter um resultado mais rápido?
for
select campos from tabela1 where ...
union all
select campos from tabela2 where ...
union all
select campos from tabela3 where ...
union all
select campos from tabela4 where ...
union all
select campos from tabela5 where ...
union all
select campos from tabela6 where ...
order by 5, 1
into :campos
do suspend;
Mais detalhes sobre a lista de discussão lista