|
|
|
|
|
Dicas
|
|
Visual Basic (Banco de Dados)
|
|
|
Título da Dica: Otimizando o acesso a Dados com ADO
|
|
|
|
Postada em 24/8/2003 por Ð@®l@n
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
|
|
|
|
|