SUM em banco firebird 1.0 e 1.5

09/09/2004

Bom dia amigos Delphianos.

Estou com um probleminha e gostaria da ajuda de você.
Seguinte ...

Temos um banco de dados projetado em Firebird 1.0 e estou tendo problemas de desempenho no mesmo. Tenho algumas rotinas de update que ao serem executadas o banco de dados fica estremamente lento, por exemplo, Um update de executa a seguinte sintaxe:

SELECT SUM(DINHEIRO) FROM CUPOM
WHERE DATA_MOV = :DATA AND
TURNO = :TURNO AND
OPERADOR = :OPERADOR
INTO :vDINHEIRO

Bem isso é apenas o começo, mas a pergunta seria ...

´Quando executo uma instrução como SUM ela verifica coloca a base toda na memória para filtrar ou apenas os dados já filtrados ?´

Puxa ficaremos gratos com alguma resposta.

Desde já muito obrigado(a) pela atenção.

Leonardo.
leonardo@softwork.com.br



[b:761b5469a6]Título editado: ´SUM EM BANCO FIREBIRD 1.0 E 1.5´[/b:761b5469a6]
Não utilize caixa alta para escrever seu título; equivale a gritar. Por favor, releia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Sandra/Moderação


Leus

Respostas

09/09/2004

Beppe

O SUM age no conjunto de dados já filtrado pelo where, senão, qual seria sua necessidade(do where)?

Definindo alguns índices, poderia melhorar o tempo de resposta.


Responder Citar

09/09/2004

Vinicius2k

Colega,

Como o Beppe já lhe sugeriu, um indice com as colunas DATA_MOV + TURNO + OPERADOR, deve melhorar significativamente a performance...

Minha sugestão é que vc execute esta instrução no seu front-end e verifique se no PLAN adotado pelo servidor seu indice foi utilizado... esta é a melhor forma de verificar a eficiência dos indices... Das ferramentas que eu conheço, o IBExpert exibe o PLAN adotado pelo servidor na execução da instrução...

Vc deve evitar, o máximo possível, a utilização do PLAN NATURAL, que é, sem índices... se vc quiser pode fazer um teste com esta instrução antes de criar o índice, que me arriscaria a dizer q o PLAN adotado está sendo o NATURAL..

T+


Responder Citar