[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