Dicas para melhorar o desempenho no acesso a dados com ADO e SQL
1-) Ao declarar suas variáveis objetos com ADO evite a seguinte declaração :
Dim rst as NEW ADODB.Recorset
Ao invés , prefira usar o seguinte código:
Dim rst as ADODB.Recordset
Set rst = New ADODB.Recordset
Com isto você esta evitando problemas com a memória e comportamentos estranhos quando liberar o recordset. ( set rst=nothing )
2-) Somente abra um recordset no momento necessário . Evite abrir os recordsets quando da carga do formulário . Assim se seu formulário possui vários controles que necessitam carga de dados ( combobox , listbox , etc..) veja se é possível carregar os dados quando o usuário clicar no controle ou em um botão apropriado.
3-) Em um Grid ou em uma lista ( listbox , combobox ) não carregue todos os registros da base de dados ; procure carregar uma quantidade aceitável. Assim se sua base de dados possuir 3000 registros procure carregar 10% deste total com um máximo de 100/200 registros.
4-) Ao usar uma instrução SQL para gerar um recordset evite a sintaxe:
SELECT * FROM Arquivo
Isto faz com que seja feita duas consultas a base de dados.
Prefira especificar os nomes dos campos
SELECT nome, endereco, cidade, cep FROM CLIENTES
5-) Se for realmente necessário percorrer um recordset evite o código:
WHILE NOT Arquivo.EOF
processa
WEND
Prefira usar o seguinte código:
Dim i as Integer
Dim reg as Integer
reg = Arquivo.Recordset.Recordcount
WHILE i <> reg
processa
x = x+1
WEND
Este código é mais eficiente pois o programa não tem que verificar a todo momento se chegamos ao fim do arquivo.(EOF). (Obs: não esqueça de mover(movenext) o ponteiro do recordset ! )
Até mais ...