[firebase-br] Problema com Performace
Luiz Henrique Martino
luiz em vmartino.net
Qua Jun 16 10:42:33 -03 2010
Fernando, bom dia!
Apenas a título de teste, experimente substituir o sua query por essa e
poste os resultados.
SELECT
SUM(P1.QUANTIDADE) QUANTIDADE
FROM
PRODUTOSALDO P1
LEFT OUTER JOIN PRODUTOSALDO AS P2 ON
P2.NUMDOCUMENTO = P1.NUMDOCUMENTOENTRADA
AND P2.SEQUENCIALLANCAMENTO = P1.SEQUENCIALLANCAMENTOENTRADA
AND P2.SEQUENCIAL = P1.SEQUENCIALENTRADA
AND P2.SERIE = P1.SERIEENTRADA
AND P2.NUMDOCUMENTO = P1.NUMDOCUMENTOENTRADA
AND P2.CODIGOREDUZIDOPRODUTO = P1.CODIGOREDUZIDOPRODUTO
AND P2.EMPID = P1.EMPID
AND P2.FILIALID = P1.FILIALID
WHERE
P1.CODIGOREDUZIDOPRODUTO = 508
AND P1.GRUPO IN ('N','C')
AND P2.GRUPO NOT IN ('N','C')
AND P1.DATAENTRADASAIDA > :DATAINICIAL
AND P1.DATAENTRADASAIDA <= :DATAFINAL
AND P1.EMPID = 1
AND P1.FILIALID = 1
[]'s
Martino
Em 16 de junho de 2010 10:15, Fernando Passos
<fernando_passos em gcti.com.br>escreveu:
> Bom dia...
>
> Estou com um problema de performance, vou expor minha situação para ver o
> que vcs podem me ajudar
>
>
>
> o SQL executado que tenho que melhor a performance
> é esse pois nesse caso desse item ta levando uns 30 s pra mais.
> referente a esse item tem 4852 registros e em toda a tabela tem 532368
> registros.
> por favor me indiquem o que pode ser feito para dar uma melhorada.
>
> select sum(p1.quantidade) quantidade from
> produtosaldo p1, produtosaldo p2
> where 1 = 1
> and p1.numdocumentoentrada = p2.numdocumento
> and p1.sequenciallancamentoentrada = p2.sequenciallancamento
> and p1.sequencialentrada = p2.sequencial
> and p1.serieentrada = p2.serie
> and p1.numdocumentoentrada = p2.numdocumento
> and p1.codigoreduzidoproduto = p2.codigoreduzidoproduto
> and p1.empid = p2.empid
> and p1.filialid = p2.filialid
> and p1.codigoreduzidoproduto = 508
> and p1.grupo in ('N','C')
> and p2.grupo not in ('N','C')
> and p1.dataentradasaida > :datainicial
> and p1.dataentradasaida <= :datafinal
> and p1.empid = 1
> and p1.filialid = 1
>
> a Tabela tem a seguinte estrutura
>
> *PRODUTOSALDO (*
> * EMPID INTEGER,*
> * FILIALID INTEGER,*
> * CODIGOREDUZIDOPRODUTO INTEGER,*
> * GRUPO VARCHAR(1),*
> * SEQUENCIAL INTEGER,*
> * SERIE VARCHAR(10),*
> * NUMDOCUMENTO INTEGER,*
> * SEQUENCIALLANCAMENTO INTEGER,*
> * CODIGOTIPODOCUMENTO VARCHAR(10),*
> * QUANTIDADE DOUBLE PRECISION,*
> * DATAENTRADASAIDA DATE,*
> * NUMLOTE VARCHAR(20),*
> * DATAVALIDADE DATE,*
> * CODIGOGRADE INTEGER,*
> * SEQUENCIALGRADEX INTEGER,*
> * SEQUENCIALGRADEY INTEGER,*
> * CODIGOPRODUTOGRADE VARCHAR(50),*
> * ALTERACAOREGISTRO TIMESTAMP,*
> * SEQUENCIALENTRADA INTEGER,*
> * SERIEENTRADA VARCHAR(10),*
> * NUMDOCUMENTOENTRADA INTEGER,*
> * SEQUENCIALLANCAMENTOENTRADA INTEGER*
> *);*
>
>
> CREATE INDEX PRODUTOSALDO_CODREDPROD ON PRODUTOSALDO
> (CODIGOREDUZIDOPRODUTO);
> CREATE INDEX PRODUTOSALDO_CODTIPODOC ON PRODUTOSALDO (CODIGOTIPODOCUMENTO);
> CREATE INDEX PRODUTOSALDO_DATAENTRADASAIDA ON PRODUTOSALDO
> (DATAENTRADASAIDA);
> CREATE INDEX PRODUTOSALDO_GRUPO ON PRODUTOSALDO (GRUPO);
> CREATE INDEX PRODUTOSALDO_IDX1 ON PRODUTOSALDO (EMPID, FILIALID,
> CODIGOREDUZIDOPRODUTO, SEQUENCIAL, SERIE, NUMDOCUMENTO,
> SEQUENCIALLANCAMENTO, GRUPO, DATAENTRADASAIDA, SEQUENCIALENTRADA,
> SERIEENTRADA, NUMDOCUMENTOENTRADA, SEQUENCIALLANCAMENTOENTRADA);
> CREATE INDEX PRODUTOSALDO_NUMDOCUMENTO ON PRODUTOSALDO (NUMDOCUMENTO);
> CREATE INDEX PRODUTOSALDO_QUANTIDADE ON PRODUTOSALDO (QUANTIDADE);
> CREATE INDEX PRODUTOSALDO_SEQLANCAMENTO ON PRODUTOSALDO
> (SEQUENCIALLANCAMENTO);
> CREATE INDEX PRODUTOSALDO_SEQUENCIAL ON PRODUTOSALDO (SEQUENCIAL);
> CREATE INDEX PRODUTOSALDO_SERIE ON PRODUTOSALDO (SERIE);
> CREATE INDEX PRODUTOSALDO_TODOS ON PRODUTOSALDO (SERIEENTRADA,
> DATAVALIDADE,
> NUMLOTE, DATAENTRADASAIDA, CODIGOTIPODOCUMENTO, SERIE, GRUPO,
> CODIGOREDUZIDOPRODUTO, FILIALID, EMPID);
> ______________________________________________
> 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