[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