USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Lentidão do MySql
MrBytes
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 23/07/2005 13:46 hs            
Boa tarde,
 
Estou usando io MySql como banco de dados no meu sistema.
Como meu cliente terá uma base de dados com 60.000 registros criei uma
base de dados com 72.000 para testes.
 
Quando abro o formulario, estou abrindo os 72.000 registros
leva 15 segundos para abrir o formulario
quando dou um MOVENEXT leva 3 segundos para passar para o registro.
Quando gravo um registro, ai fica um século para gravar ( tenho que finalizar
o sistema )
talvez seja como estou abrindo o recordset. Ai vai como eu abro ele :
 
    sSql3 = "SELECT * FROM Conteudo"
    rsConteudo.Open sSql1, cn, adOpenDynamic, adLockOptimistic
 
Alguém sabe como posso deixar mais rápido ?
 
O MySql esta instalado na minha máquina ( Atlon XP 2200+ com 484 mb de ram )
 
Se alguém tiver algum método de ir abrindo o Recordset com menos registro e medida
que for preciso ele abre o restante, ja ajudaria.
 
Em Access esta muito mais rápido que no MySql. A diferença é gritante
 
obrigado
 
 
 
 
 

http://vaza.me/eneiO
TÓPICO EDITADO
 
VbMan
RECIFE
PE - BRASIL
ENUNCIADA !
Postada em 24/07/2005 18:12 hs            
Vamos lá!
Em primeiro lugar, não há precisão em se abrir 72.000 registros de uma vez, com esta quantidade de registros qualquer banco de dados vai ficar lento. Há um problema muito sério com relação a desenvolvimento de software que manipulem dados. No início quando o bando de dados tem poucos registros, tudo é rápido, após algum tempo de uso as coisas começam a complicar. Existem várias técnicas de otimização quando se trabalha com grande massa de dados.
No seu exemplo citado acima:
sSql3 = "SELECT * FROM Conteudo"

1 - Você poderia melhorar da seguinte maneira:
sSql3 = "SELECT * FROM Conteudo  LIMIT 0, 50"
Mostra a princípio os 50 primeiros registros.
Com isso o form não irá demorar para carregar
Outra coisa não faz sentido mostrar todos os meus registros, é humanamente impossível vc ver os 72.000 registro em uma tela, é desnecessário isso.
Mostre apenas os 100 primeiros, depois force o usuário a pesquisar por mais registros.
Coloque uma rotina de busca com select para buscar o que o usuário procura.
Espelhe-se no GOOGLE.

2 - Mostre apenas o que precisar
Se chamar todos os campos de uma tabela, sem usar todos os campos é desperdício, principalmente se estiver trabalhando em rede, custa muito cara para o servidor retornar todos os registros de uma vez.

Seja fominha, lembra-se do filme da Disney (Mogle o menino lobo) tem uma música que é mais ou menos assim:

[S46] Necessário, somente o necessário o extraordinário é demais. [S46]

Ex.: sSql3 = "SELECT campo1, campo2  FROM Conteudo  LIMIT 0, 50"

3 - Abra o banco de dados antes de tudo.
O ADO tem uma inércia inicial, ou seja, se for a primeira vez em que o banco é aberto, leva um certo tempo para ativar, isto é característica dele, depois o mesmo fica muito mais rápido já que é criada uma instância em memória.

O :( ACCESS nao foi projetado para trabalhar em ambiente multi-usuário, por isso ele é mais rápido (em tese) do que outros bancos, mas esta velocidade é aparente, na medida em que o access vai ficando recheado, o mesmo perde performace, sem falar que pode se corromper com facilidade. Isto não ocorre com ocorre com o MYSQL (em tese).

O :( ACCESS não possui nem 5% dos recursos do MYSQL, por isso insista, estude SQL(Structured Query Language) dá para se fazer coisas tremendas com ela, dá até para  trabalhar com :( ACCESS.

That´s ALL
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página