Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vladmirpinto

problemas com desempenho na consulta

Recommended Posts

Senhores, estou fazendo a seguinte consulta no banco:SELECT A.DAT_EMISSAO,B.COD_REDUZIDO , A.COD_FILIAL, A.COD_CLIENTE,A.COD_VENDEDOR , SUM(B.QTD_PRODUTO),SUM((B.VLR_UNITARIO - B.VLR_DESCTO)), SUM((B.VLR_UNITARIO - B.VLR_DESCTO)- B.VLR_CUSTOCADPROD)FROM CADCVEND AS A, CADIVEND AS BWHERE A.NUM_NOTA=B.NUM_NOTAAND B.COD_REDUZIDO=C.COD_REDUZIDOAND B.DAT_EMISSAO BETWEEN 2007-01-01 AND 2007-12-31AND B.VLR_UNITARIO > 0AND B.QTD_PRODUTO > 0GROUP BY A.DAT_EMISSAO, B.COD_REDUZIDO, A.COD_CLIENTE, A.COD_FILIAL,A.COD_VENDEDOREstou tendo probleemas com desempenho na maquina, o processamento fica em quase 100% da cpu, gostaria de saber se teria como otimizar essa consulta, ou se seria problemas de otimização do proprio banco.Sendo que minhas tabelas tem em torno de 2000000 e 1000000 cada uma.Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desempenho é algo um pouco complicado de lhe dar uma solução. Olhando sua consulta, ela apresenta agrupamento com muitos operadores AND montando uma condição complicada para o banco resolver, já que ele terá que ler todo o counto de dados e depois refazer a leitura para então achar os registros que estão de acordo com a tal expressão lógica do where, ainda depois ele terá que gerar resultados para as funções agregadas agregadas que está na seleção.

 

Bom, não é uma consulta complicada, mas, aconselho que você observe os índices (CREATE INDEX) nos campos que estão na condição da cláusula WHERE e campos que participam do agrupamento. Coloque cada índice e teste a consulta.

 

EXPLAIN também é ;egal para verificar qual índice ou qual método de acesso o otimizador está utilizando.

 

Qualquer dúvida, volte a postar!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.