La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4712 - URGE: CONSEGUIR RAPIDEZ CON ADO Y SQL-SERVER 7
Autor:  ameli cn
Gracias por leerlo.
Tengo un gran problema y es que tengo una aplicacion VB en la que accedo a una base de datos en Sql-Server 7 a traves de ADO y los accesos son muy muy lentos. Que puedo hacer hay algo para optimizarlo en SQL-Server 7 o que hago mal, yo abro una conexion para toda la aplicacion y la utilizo en los accesos de esta forma:

Global G_Conex_Config As New ADODB.Connection
Dim reg As New ADODB.Recordset

G_Conex_Config.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PWD=;Initial Catalog=nombre_base_datos;Data Source=nombre_servidor", , , -1
.
.
.
reg.Open "Select * from empresas", G_Conex_Config, adOpenDynamic, adLockOptimistic, -1

Muchas gracias por vuestra atención

  Respuesta:  Javier Gonzalez
Para optimizar tus consultas, deberias administrar los indices de tus tablas, NO usar un recordset para actualizar o agregar(Update, AddNew) usa instrucciones SQL (Insert into,Update set), Para crear recordset, para recorrerlos, en la consulta solo debe obtener los que necesitas, no pongas "select * from ...", ocupa mucha memoria, al crear el Recordset debe crearlo no como dynamic, ni Static, debe hacerlo como Firehose (De Solo lectura y solo avanze), crea un cursor notablemente mas rapido

  Respuesta:  Ubeimar Alonso Vergara Gallo
Lo que se puede hacer es no abrir todos los recordset en el modo adOpenDynamic, y solo se debe usar cuando lo que se quieren es actualizaciones (update) o insertar (addNew).
Para solo consulta es mejor el modo adOpenStatic.
Por otro lado es mejor omitir el ultimo parametro (-1).

El modo en que se abre un recordset influye en los tiempos de respuesta de estos.

Al abrir la conexion solo es necesario el primer parametro (ConnectionString)

PD: mil disculpas, pero no suelo marcar los acentos, espero que esté claro.