Foros del Web » Programando para Internet » ASP Clásico »

Optimizar Recordset de Connection.Execute

Estas en el tema de Optimizar Recordset de Connection.Execute en el foro de ASP Clásico en Foros del Web. Hola ASPeros, verán, en mi sitio web hago lo siguiente: Código: Public Function ReadData(sSQL) Dim RecordSet Set RecordSet = oCON.Execute(sSQL) If RecordSet.BOF and RecordSet.EOF then ...
  #1 (permalink)  
Antiguo 10/01/2012, 22:25
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 16 años, 4 meses
Puntos: 54
Optimizar Recordset de Connection.Execute

Hola ASPeros, verán, en mi sitio web hago lo siguiente:

Código:
  Public Function ReadData(sSQL)
    Dim RecordSet
    Set RecordSet = oCON.Execute(sSQL)
    If RecordSet.BOF and RecordSet.EOF then
      ReadData = False
    Else
      ReadData = RecordSet.GetRows
    End If
    RecordSet.Close()
    Set RecordSet = Nothing
  End Function
a esa funcion le paso la sentencia SQL y devuelvo el getrows, pero me he visto obligado a migrar de mysql a access y ahora noto un poco de lentitud en la carga (tambien puede ser el nuevo hosting pero eso lo descarto por ahora) de los datos de ese getrows, y si con una sola consulta se pone lenta, no quiero saber que puede pasar con varias visitas a la vez...

En fin, segun el W3Schools (http://www.w3schools.com/ado/met_conn_execute.asp) dice lo siguiente:

Cita:
The results are stored in a new Recordset object if it is a row-returning query. A closed Recordset object will be returned if it is not a row-returning query.

Note: The returned Recordset is always a read-only, forward-only Recordset!

Tip: To create a Recordset with more functionality, first create a Recordset object. Set the desired properties, and then use the Recordset object's Open method to execute the query.
Es decir, que el recordset ya viene predefinido como sólo lectura y avanze secuencial solo hacia adelante, no hay problema en eso, pero quisiera saber si existe alguna otra forma de optimizar ese recordset a fin de hacer que las consultas respondan más rápido.

Gracias de antebrazo.
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #2 (permalink)  
Antiguo 18/01/2012, 06:51
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 16 años, 4 meses
Puntos: 54
Respuesta: Optimizar Recordset de Connection.Execute

¿alguien me ayuda?
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #3 (permalink)  
Antiguo 20/01/2012, 15:42
 
Fecha de Ingreso: septiembre-2005
Mensajes: 20
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Optimizar Recordset de Connection.Execute

oCON.Execute(sSQL)

oCON que?
sSQL que?

se supone que oCON sera =Server.CreateObject("ADODB.Recordset")
y sSQL=Server.CreateObject("ADODB.Connection")?

ReadData es un array, no tiene pq dar ese error, con el array puedes ir en la direccion que quieras.
  #4 (permalink)  
Antiguo 23/01/2012, 01:51
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 16 años, 4 meses
Puntos: 54
Respuesta: Optimizar Recordset de Connection.Execute

U_Goldman y los demas dioses del ASP, dónde se han metido? necesito respuesta pronta a este tema U_U
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #5 (permalink)  
Antiguo 24/01/2012, 18:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
Respuesta: Optimizar Recordset de Connection.Execute

Cita:
Iniciado por Julcar Ver Mensaje
U_Goldman y los demas dioses del ASP, dónde se han metido? necesito respuesta pronta a este tema U_U
Serán los odiosos del ASP...

Según yo, no hay mucho mas que hacer, efectivamente el invocar el método execute del objeto connection creará un recordset en el cual puedes desplazarte solo hacia adelante y de solo lectura por defecto.

Lo único que quedaría por hacer toda vez que estás creando un recordset "ligero" y lo estás metiendo a un arreglo con getrows es optimizar tu consulta, ve si necesitas traer todos los campos que estás trayendo, también si puedes devolver menos registros, si estás haciendo joins innecesarios, etc.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 25/01/2012, 13:54
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 16 años, 4 meses
Puntos: 54
Respuesta: Optimizar Recordset de Connection.Execute

Cita:
Iniciado por u_goldman Ver Mensaje
Serán los odiosos del ASP...

Según yo, no hay mucho mas que hacer, efectivamente el invocar el método execute del objeto connection creará un recordset en el cual puedes desplazarte solo hacia adelante y de solo lectura por defecto.

Lo único que quedaría por hacer toda vez que estás creando un recordset "ligero" y lo estás metiendo a un arreglo con getrows es optimizar tu consulta, ve si necesitas traer todos los campos que estás trayendo, también si puedes devolver menos registros, si estás haciendo joins innecesarios, etc.

Saludos
justamente, las consultas siempre estan limitadas a no mas de 12 registros, y para eso uso paginación en access basada en sql, funciona en una escala 8/10, pero me pareció leer en devguru que el connection.execute tiene unos punteros especiales.
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"

Etiquetas: asp, mysql, recordset, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:38.