[firebase-br] Problema com Performace

Fernando Passos fernando_passos em gcti.com.br
Qua Jun 16 10:15:00 -03 2010


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);



Mais detalhes sobre a lista de discussão lista