Otimizando o acesso a Dados com ADO


Geralmente quando tratamos com um recordset ADO referenciamos os valores dos campos(Colunas) no recordset usando a seguinte sintaxe:

if rs("codigo") > 0 then

Ou ainda há quem prefira usar a seguinte sintaxe :

if rs.fields("codigo") > 0 then

Quer um caminho melhor ? Você pode melhorar em muito o desempenho se referenciar os nome das colunas do recordset usando a sua forma ordinal. Assim

if rs.fields(0) > 0 then

Lembre-se que o índice inicial referente a primeira coluna é o valor ordinal zero (0) , assim se você quiser referenciar a coluna(campo) de número 13 vai ter que usar : rs(12).

Naturalmente você poderá usar constantes ou enumeraração para tornar o código mais legível. Veja um exemplo:

const fldQuantidade = 5

if rs.fields(fldQuantidade) > 0 then

Quer ir ainda mais longe ? O ganho com o desempenho fica ainda mais acentuado se usarmos a seguinte sintaxe :

const fldQuantidade = 5

Dim objQuantidade as ADODB.Field

set objQuantidade = rs(fldquantidade)

if objQuantidade >0 then

Passei por esta experiência em um projeto onde uma rotina que levava cerca de 12 segundos para ser executada caiu para 3 segundos.

A seguir temos tabela de comparação entre as sintaxes usadas e o tempo gasto no processamento. Compare:

Sintaxe usada rs("nome_do_Campo) rs(x) set objrs = rs(x)
Resultados percentuais 100 % 55% 5%
Resultados em segundos para um caso geral 2,895 1,625 0,594

Até a próxima...

José Carlos Macoratti