Fórum Select lento em rede #501419

17/11/2014

0

Olá pessoal, utilizo o Firebird 2.5, com delphi 7. Tenho o seguinte problema em um cliente, a base de dados fica no servidor, até aí normal, mas quando abro a consulta de produtos num pc da rede, com um select normal, ele demora uns 30 segundos no open. Eles possuem 9500 produtos. Então trouxe a base de dados para o escritorio, e simulei o ambiente, e realmente demora, então peguei uma outra base de dados, de um cliente similar e com 12500 produtos cadastrados, e o deles abre quase que instantaneo, e com mais registros. Fiz gfix e gback na base, mas não resolveu, peguei uma base de dados zerada e utilizei o IBPump para transferir, e tb não obtive melhores resultados, alguem poderia me ajudar.
Cristiano

Cristiano

Responder

Posts

17/11/2014

Marisiana Battistella

Olá Cristiano!
Sugiro que você analise se há índices criados nas tabelas e em seguida verifique o plano de execução dessa instrução SQL para analisar o custo, o tempo de execução, etc.
Neste artigo tem informações que pode te auxiliar Índices e performance em bancos de dados Firebird
Responder

Gostei + 0

17/11/2014

William

Essas 2 bases que estão sendo comparadas estão indexadas da mesma maneria?

Como está sendo escrito seu SELECT?
Responder

Gostei + 0

17/11/2014

Marisiana Battistella

Encontrei mais um artigo que explica sobre o plano de execução no firebird: [url]http://www.linhadecodigo.com.br/artigo/123/firebird-e-seus-planos-de-otimizacao.aspx[/url]
Responder

Gostei + 0

17/11/2014

Cristiano

Olá, Marisiana, legal, estou dando uma olhada, obrigado pelas dicas

Willian, veja como eu tenho meu select
SELECT P.CDREDUZIDO, P.CDFABRICANTE, P.CDPRODUTO, P.DSPRODUTO, P.DSUNIDADE, P.PRVENDA, P.QTESTOQUEATUAL,
P.PRCUSTO, P.DSAUXILIAR, P.DSLOCALIZACAO, P.DSAPLICACAO, M.CDREDUZIDO, M.DTINICIAL, M.DTFINAL, M.PCDESC, M.QTPROMOCAO
FROM PRODUTO P LEFT JOIN PROMOCAO M ON (P.CDPRODUTO = M.CDREDUZIDO) ORDER BY P.DSPRODUTO
Responder

Gostei + 0

18/11/2014

William

Esses 2 campos da comparação "P.CDPRODUTO = M.CDREDUZIDO" estão indexados?
Responder

Gostei + 0

18/11/2014

William

Esses 2 campos da comparação "P.CDPRODUTO = M.CDREDUZIDO" estão indexados?
Responder

Gostei + 0

18/11/2014

Cristiano

Olá Willian, P.CDPRODUTO não tenho indice, mas M.CDREDUZIDO é chave primaria. Mas se tiro o left join, a demora é a mesma, já fiz esse teste também.

Mas deixando o left, voce diria para eu criar apenas um indice do CDPRODUTO?
Responder

Gostei + 0

18/11/2014

Marisiana Battistella

Uma dúvida.... Tem necessidade de utilizar o LEFT JOIN? Você precisa que retorne todos os produtos mesmo que não tenham promoção?
Responder

Gostei + 0

18/11/2014

Cristiano

Olá Marisiana, sim, tem a necessidade, o que identificamos agora, o problema é um campo do tipo Blob, basicamente todo o item tem especificações nesse tipo de campo, e ao colocarmos null esse campo, abre que imediato...agora aí está o problema, como fazer aparecer e deixando ele rapido!
Responder

Gostei + 0

18/11/2014

William

Cristiano uma premissa importante para performance de consultas é sempre que possível envolver campos indexados nas cláusulas WHERE ou ON, no seu caso seria interessante que os 2 campos fossem indexados!
Responder

Gostei + 0

18/11/2014

Cristiano

Olá pessoal, consegui uma ótima performance com o seguinte código:
SELECT P.CDREDUZIDO, P.CDFABRICANTE, P.CDPRODUTO, P.DSPRODUTO, P.DSUNIDADE, P.PRVENDA, P.QTESTOQUEATUAL,
P.PRCUSTO, P.DSAUXILIAR, P.DSLOCALIZACAO,CAST(SUBSTRING(P.DSAPLICACAO FROM 1 FOR 1000) AS VARCHAR(1000)) AS DSAPLICACAO ,
M.CDREDUZIDO, M.DTINICIAL, M.DTFINAL, M.PCDESC, M.QTPROMOCAO
FROM PRODUTO P
LEFT JOIN PROMOCAO M ON (P.CDPRODUTO = M.CDREDUZIDO)
Responder

Gostei + 0

19/11/2014

Marisiana Battistella

Que bom Cristiano!
Você precisou criar algum índice ou apenas utilizou o CAST?
Responder

Gostei + 0

19/11/2014

Cristiano

Não foi criado indice novo, mas agradeço a voce e todos os outros colegas que tentaram encontrar uma solução.
Responder

Gostei + 0

20/11/2014

Marisiana Battistella

Por nada Cristiano! =)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar