CONSULTA MAIS RAPIDA.

TRUHILLO 07/06/2005 16:40:37
#87506
Eu uso o controle ListView, que vem no Common Controls do Windows,
para exibir os dados de uma tabela que busco usando ADODB.

Enquanto a tabela tem poucos registros, tudo bem, busca rapidinho,
Mas agora estou trabalhando com um banco de dados MySQL que tem
numa única tabela quase 500.000 registros e mudei de ListView para
um ótimo controle que encontrei no vbAccelerator, o Super Grid 2.

E na hora de preencher a tabela com um laço For...Next tah demorando
cerca de 3 minutos (eh muito lento pra exibir uma informação ao cliente).
Gostaria de saber se existe uma maneira de preencher o controle mais
rapidamente.
JEAN.JEDSON 07/06/2005 16:42:36
#87508
bem... no caso do listview, vc preenche ele como visible = true? mude para = false e veja se tem diferença.
TRUHILLO 07/06/2005 16:46:53
#87512
Jah tentei, mas o problema eh na consulta mesmo.
São muitos registros.
USUARIO.EXCLUIDOS 07/06/2005 16:54:55
#87514
Truhillo, mas com certeza você não precisa preencher um grid ou list com todos os 500.000 registros... você deve buscar apenas os campos e os registros que necessita REALMENTE... outra coisa... ADODB é um controle VINCULADO... ao abrir o bd ele abre todos os registros... operações com esse controle irão ter o desempenho comprometido... para ter mais rapidez, sugiro o accesso via ADO Declarado....
TRUHILLO 07/06/2005 16:59:29
#87520
Desculpe, Germanir, mas eu postei errado, eu uso ADO declarado mesmo.

E trata-se de uma tabela de uma lista telefà'nica para consultas no computador.
Então o cliente vai precisaria mesmo abrir todos os registros de uma vez.
USUARIO.EXCLUIDOS 07/06/2005 17:12:03
#87528
Resposta escolhida
truhillo, como esta declarando sua conexão e seu recordset???
qual a rotina que preenche o grid??
você não consegue fazer este preenchimento por paginas??? exemplo: se você tem 50.000 registros, voce preenche apenas 10.000 de cadas vez o que daria 5 paginas, então é só o cliente clicar em proxima pagina e exibira os próximos 10.000
outra coisa é limitar as informações a serem exibidas no grid, exemplo se tem 15 campos na tabela, preencha o grid com os 5 que o seu cliente mais usa, se ele quiser ver o resto poderia se exibido em um form a parte.
TRUHILLO 07/06/2005 17:22:50
#87535
Ó“tima idéia, William.

Vou postar a string de conexão aqui amanhã (o programa tah em casa).
Vou trazer tb a tela pra vcs verem como deve ficar.
USUARIO.EXCLUIDOS 07/06/2005 17:30:32
#87540
Se a maquina nao for boa, a demora é perceptivel mesmo, nesses caso nao tem jeito a nao ser trazer os registros filtrados por alguma condicao.
Esse tipo consulta nao deve ser utilizado pra carregar muitos registros, afinal voce esta sobrecarregando a memoria do computador.
O desempenho depende muito de como voce abriu o recordset, e tambem da maquina.
USUARIO.EXCLUIDOS 07/06/2005 17:31:10
#87541
ia esquecendo, o banco quando aberto de forma correta, não demora muito, o que demora mesmo, é por os dados no grid, dependendo da quantidade de registros é claro.
TRUHILLO 08/06/2005 11:01:00
#87644
Realmente, Wiliam.

Pra conectar eh bem rápido, o que tah pegando mesmo é preencher o listview com todos os registros da tabela.
USUARIO.EXCLUIDOS 08/06/2005 12:43:14
#87683
cadê a string de conexão para gente dar uma olhada [S95]
poste tambem a rotina de preenchimento do listview
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas