[firebase-br] FULL JOIN
Haroldo Dias
haroldo em delfa.com.br
Qui Jun 11 15:00:03 -03 2009
Olha Sandro, foi bem mais rápido sim, mas como eu estou colocando abaixo
fica o ideal, além de ser tambem mais simples.
SELECT A.ESTABELECIMENTO_CODIGO, A.LOCALIZACAO_CODIGO, A.PRODUTO_CODIGO,
MAX(A.DATA)
FROM TBESTOQUE_SALDO_DIARIO A, TBPRODUTO B
WHERE
(A.ESTABELECIMENTO_CODIGO = :ESTABELECIMENTO_1)AND
(A.PRODUTO_CODIGO BETWEEN :PRODUTO1 AND :PRODUTO2)AND
(B.CODIGO = A.PRODUTO_CODIGO)AND
(B.TIPOPRODUTO_CODIGO = :TPO_1)AND
(B.FAMILIA_CODIGO = :FAMILIA_1)
GROUP BY A.ESTABELECIMENTO_CODIGO,
A.LOCALIZACAO_CODIGO,
A.PRODUTO_CODIGO
"Sandro Souza" <escovadordebits em gmail.com>
escreveu na mensagem
news:64d5939a0906110657x19c5e6eocbee7343174b512c em mail.gmail.com...
Bom dia/tarde Haroldo.
Grande Haroldo, então só nos resta verificar se todos os índices que
poderiam agilizar essa consulta já foram criados.
Nesse caso, sugiro a criação dos seguintes índices, caso ainda não tenham
sido criados:
CREATE INDEX IX_ESTOQUE_SALDO_DIARIO ON TBESTOQUE_SALDO_DIARIO
(ESTABELECIMENTO_CODIGO, PRODUTO_CODIGO);
CREATE INDEX IX_PRODUTO_CODI_TIPO_FAMI ON TBPRODUTO (CODIGO,
TIPOPRODUTO_CODIGO, FAMILIA_CODIGO);
Só como teste, você poderia criar esses dois índices apenas para verificar
se o tempo gasto por aquela mesma consulta ficou satisfatório?
Espero ter ajudado mais que atrapalhado. :D
2009/6/11 Haroldo Dias <haroldo em delfa.com.br>
> Cara, me expressei mau, até que funciona sim, o problema que é muito
> demorado para retornar o resultado da consulta. No IB são alguns milésimos
> de segundo...
>
> "Sandro Souza" <escovadordebits em gmail.com>
> escreveu na mensagem
> news:64d5939a0906110632y4d788c31k3515773bc03a7b16 em mail.gmail.com...
> Bom dia/tarde Haroldo.
>
> Grande Haroldo, você poderia nos informar se foi retornada alguma mensagem
> de erro (e qual seria ela) ou se o resultado não foi o esperado (nenhum
> registro, por exemplo)?
>
> 2009/6/11 Haroldo Dias <haroldo em delfa.com.br>
>
> > Não tinha testado ainda, fiz agora mas não funcionou.
> >
> > "Sandro Souza" <escovadordebits em gmail.com>
> > escreveu na mensagem
> > news:64d5939a0906110528y40eb350dsddf65fdb02fb7cd1 em mail.gmail.com...
> > Bom dia/tarde Haroldo.
> >
> > Grande Haroldo, muito provavelmente você já deve ter feito isso, mas não
> > custa perguntar:
> >
> > Você já testou o seguinte código?
> >
> > SELECT
> > A.ESTABELECIMENTO_CODIGO,
> > A.LOCALIZACAO_CODIGO,
> > A.PRODUTO_CODIGO,
> > MAX(A.DATA)
> > FROM
> > TBESTOQUE_SALDO_DIARIO A
> > WHERE
> > (A.ESTABELECIMENTO_CODIGO = :ESTABELECIMENTO_1)AND
> > (A.PRODUTO_CODIGO BETWEEN :PRODUTO1 AND :PRODUTO2)AND
> > EXISTS(
> > SELECT
> > B.CODIGO
> > FROM
> > TBPRODUTO B
> > WHERE
> > (B.CODIGO = A.PRODUTO_CODIGO)AND
> > (B.TIPOPRODUTO_CODIGO = :TPO_1)AND
> > (B.FAMILIA_CODIGO = :FAMILIA_1))
> > GROUP BY
> > A.ESTABELECIMENTO_CODIGO,
> > A.LOCALIZACAO_CODIGO,
> > A.PRODUTO_CODIGO
> >
> > Espero ter ajudado mais que atrapalhado. :D
> >
> > 2009/6/11 Haroldo Dias <haroldo em delfa.com.br>
> >
> > > Bom dia
> > >
> > > Estou migrado do IB 2007 para FB 2.1.2 e nas minhas sp's, eu costumo
> > > usar
> > > muito o full join, que no IB o processamento é rapidinho, mas no fb
> > > praticamente trava a máquina, logo abaixo tenho um exemplo bem
> > > simples,
> > > o
> > > que vcs sugerem que eu faça?
> > > Nesse mesmo exemplo, se eu usar LEFT JOIN ou RIGHT JOIN também trava.
> > >
> > > Select A.Estabelecimento_Codigo, A.Localizacao_Codigo,
> A.Produto_Codigo,
> > > Max(A.Data)
> > > From TbEstoque_Saldo_Diario A FULL JOIN TbProduto B On
> A.Produto_Codigo
> > =
> > > B.Codigo
> > > Where (A.Estabelecimento_Codigo = :ESTABELECIMENTO_1)
> > > and (A.Produto_Codigo between :PRODUTO_1 and :PRODUTO_2)
> > > and (B.TipoProduto_Codigo = :TPO_1)
> > > and (B.Familia_Codigo = :FAMILIA_1)
> > > Group By A.Estabelecimento_Codigo, A.Localizacao_Codigo,
> > > A.Produto_Codigo
> > >
> > > --
> > > Atenciosamente,
> > >
> > > Haroldo Dias
> > >
> > >
> > >
> > >
> > >
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista