[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