Performance na Consulta
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!
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
Curtidas 0
Respostas
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 ...
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
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.
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
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.
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
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!
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
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.
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
27/01/2004
Olá, maicongabriel;
A instrução é simples : SELECT * FROM nfsaida
OU SELECT * FROM nfsaida WHERE nfsaida = 2569
Ok?
Valeu galera!
A instrução é simples : SELECT * FROM nfsaida
OU SELECT * FROM nfsaida WHERE nfsaida = 2569
Ok?
Valeu galera!
GOSTEI 0