[firebase-br] CTE com Left Join, bug do Firebird?

Anderson Barretta sistemas em prevedello.com.br
Qui Maio 25 17:20:09 -03 2017


boa tarde pessoal,
algum tempo tenho me deparado com lentidão em selects, teoricamente
simples,
que utilizam CTE + Left join.
como no ex. abaixo.

usando CTE com Join simples,  demora menos de 1 seg para realizar e faz
read em 1.350 registros.
mas com Left join demora 2 minutos e faz read em 12.864.358.
sendo q minha tabela de laboratórios tem apenas 500 registros.

se eu transformo a CTe em uma tabela temporária antes e executo com LEFT
join fica super rápida.
no meu entender as CTe deveriam se comportar como uma tabela temporária
,mas não é isso que ocorre...

Alguem já passou por isso?
é algum BUG do firebird?
ou meu entendimento está errado?

SQL:

with VendLab as
 (
   SELECT
      P.CODFABRICANTE_PRODUTO AS CODLAB,
      Sum (Vp.QUANT_VENDAPRODUTO- VP.QNTDEVOLVIDA_VENDAPRODUTO) as Qnt,
      Sum (Vp.SUBTOTAL_VENDAPRODUTO) as SUBTOTAL
    FROM VENDAPRODUTOS VP, VENDAS V, PRODUTOS P
    WHERE
      VP.CODVENDA_VENDAPRODUTO = V.COD_VENDA AND
      VP.CODPRODUTO_VENDAPRODUTO = P.COD_PRODUTO AND
      (V.DATA_VENDA BETWEEN '01.05.2017' AND '30.05.2017')
      group by 1
  )
    Select L.COD_LABORATORIO AS CODLAB,
    SUM(VL.QNT) AS QNT,
    SUM(VL.SUBTOTAL) AS SUBTOTAL
    FROM ( LABORATORIOS L *LEFT *JOIN VendLab VL ON (VL.CODLAB =
L.COD_LABORATORIO) )
    group by 1



-- 

<http://www.prevedello.com.br>


Anderson Barretta
Dpto: Desenvolvimento

Fone: (55) 3744 3880
Skype: sistemas em prevedello.com.br



Mais detalhes sobre a lista de discussão lista