[firebase-br] Dúvida com sql
Eduardo Pombo
eduardo em embras.net
Qua Nov 3 11:52:25 -03 2010
bom dia,
Acredito que eh por causa do INNER qdo vc usa inner ele trabalha o
join fazendo a pesquisa de modo diferente é como se a busca fosse
feito primeiro na tabela " i ", talvez so de inverter a tabela
principal trocando a tabela "i" com a "v" ja resolva ou ate mesmo no
where mudar para ser "i.empresa = 1" ao inves de "v.empresa=1" ja
resolva
Espero ter ajudado,
2010/10/31 news://news.gmane.org/gmane.comp.db.firebase.portuguese
<aps180180 em gmail.com>:
> Tenho a seguinte sentença sql num banco de 600 mb
>
> SELECT
> v.DTVENDA AS DATA,
> v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
> i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
> FROM
> EST007 v
> INNER JOIN
> EST008 i ON i.EMPRESA = v.EMPRESA
> AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
> AND COALESCE(i.TIPOVENDA,' ') <> 'F'
> WHERE v.Empresa = 1
> AND v.DtVenda between '01.01.0001' and '30.09.2010'
> AND COALESCE(v.Cancelado,'N') <> 'S'
> AND COALESCE(v.BAIXAR,' ') <> 'D'
> AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
> AND i.Produto = '00201'
>
> /******************************************************************************/
> /**** Indices de v ****/
> /******************************************************************************/
>
> CREATE INDEX EST007_EMP_NUMDOC ON EST007 (EMPRESA, NUMDOC);
> CREATE INDEX EST007_IDX1 ON EST007 (DTCANCELADO);
> CREATE INDEX EST007_IDX2 ON EST007 (EMPRESA, NUMOS);
> CREATE INDEX EST007_IDX3 ON EST007 (EMPRESA, DTVENDA, CANCELADO);
> CREATE INDEX EST007_IDX4 ON EST007 (EMPRESA, NUMCUPOM);
> CREATE INDEX EST007_IDX5 ON EST007 (EMPRESA, DOCORIGEMGERADO);
> CREATE INDEX EST007_IDX6 ON EST007 (EMPRESA, CLIENTE);
> CREATE INDEX EST007_IDX7 ON EST007 (EMPRESA, NUMOS, VENDACONTADOR);
> CREATE INDEX EST007_IDX8 ON EST007 (EMPRESA, MANIFESTO);
> CREATE INDEX EST007_IDX9 ON EST007 (EMPRESA, TIPODOCORIGEM, NUMDOCORIGEM);
> CREATE INDEX EST007_NUMDOC ON EST007 (NUMDOC);
> CREATE INDEX SK_DTVENDA ON EST007 (DTVENDA);
> CREATE INDEX SK_MANIFESTO ON EST007 (MANIFESTO);
>
>
> /******************************************************************************/
> /**** Indices de i ****/
> /******************************************************************************/
>
> CREATE INDEX EST008_IDX1 ON EST008 (EMPRESA, ITEMVENDACONTADOR, TIPOVENDA);
> CREATE INDEX EST008_IDX2 ON EST008 (EMPRESA, PRODUTO, TIPOVENDA);
> CREATE INDEX EST008_IDX3 ON EST008 (EMPRESA, PRODUTO);
> CREATE INDEX EST008_IDX4 ON EST008 (EMPRESA, ITEMVENDACONTADOR, PRODUTO);
> CREATE INDEX EST008_PRODUTO ON EST008 (PRODUTO);
>
>
>
>
>
>
> O que acontece é o seguinte:
>
> Se o produto existe na tabela i o resuldo é imediato, se nao existe demora
> uns 26 segundos.
>
> o que posso fazer para resolver?
>
> Grato.
>
> André Pereira
>
>
>
>
>
> ______________________________________________
> 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
>
--
Atenciosamente
José Eduardo Pombo de Barros
Gerente de Manutenção de Sistemas
Mais detalhes sobre a lista de discussão lista