Performance na Consulta

Delphi

27/01/2004

Olá Pessoal;

Estou com um problema, acho que vcs podem me ajudar.
Como posso aumentar a performance quando ativo uma query.

No evento onCreate de um formulário de Notas Fiscais de Saida, eu ativo minha query.

QNFSaida.Open;

Este procedimento têm demorado muito. O SQL é simplesmente ´SELECT * FROM nfsaida´ , e não tenho campos calculados nem campos lookup.

O que posso fazer para ter mais performance neste processo?

Obrigado!


Galodoido

Galodoido

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

27/01/2004

Vejamos,..

você realmente preciza de todos os campos (*) da tabela ´nfsaida´ ?
você preciza de todos os registro da tabela ´nfsaida´ independente do cliente ou algo assim ?
Etc, etc...

Não sei se você me entendeu, mas analize os dados mínimos os quais você necessita que sejam tragos à tela, traga apenas os campos realmente necessários neste momento e especifique algum critério ´Where´, para cliente ou algo assim ...

Ex: ´SELECT NFS.NumeroNota, NFS.Cliente FROM nfsaida NFS WHERE NFS.Cliente = 10´
{ é apenas um exemplo bobo }



GOSTEI 0
Aroldo Zanela

Aroldo Zanela

27/01/2004

Colega,

Se estiver utilizando um SGBDR, evite utilizar select sem restrições (Where), pois você deve trazer para a estação somente os dados necessários.
No caso de estar utilizando Banco de dados desktop (Paradox, xBase) é melhor utilizar TTable, pois neste caso, apresentam maior performance.


GOSTEI 0
Galodoido

Galodoido

27/01/2004

Minha consulta realmente, é muito simples. O banco que estou utilizando é o MS-SQLServer.

Quanto a causa Where, já incluí e continua lento!

De qualquer forma, obrigado pelas dicas. Caso saibam de mais alguma coisa ficarei agradecido.


GOSTEI 0
Maicongabriel

Maicongabriel

27/01/2004

Indices! Você tem indices para os campos de ordenação da Select?
Não somente para ordenação, mas indices são muito importantes para uma boa performance na Select!
Coloque a sua consulta aqui, para que possamos vê-la!


GOSTEI 0
Ldsirene

Ldsirene

27/01/2004

Olha, pode parecer besteira, mas é melhor vc colocar no evento OnSHow do seu form do que no evento OnCreate. No evento OnCreate é justamente quando os construtores da classe estão sendo chamados, e vc esta aumentando o processo de construção do form, concorrendo com o evento open da sua query! Coloque no evento OnShow do form e tire do OnCreate, e faça assim:

qryexemplo.Prepare;
qryexemplo.Open;

qryexemplo seria o nome do seu componente. Use o prepare antes de open que ajuda na performance, pode consultar a ajuda do Delphi sobre isso!

Espero ter ajudado.


GOSTEI 0
Galodoido

Galodoido

27/01/2004

Olá, maicongabriel;

A instrução é simples : SELECT * FROM nfsaida

OU SELECT * FROM nfsaida WHERE nfsaida = 2569

Ok?

Valeu galera!


GOSTEI 0
POSTAR