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

Recuperar los últimos tres datos de una BD más rápidamente

Estas en el tema de Recuperar los últimos tres datos de una BD más rápidamente en el foro de ASP Clásico en Foros del Web. Saludos: Tengo una conexión con una base de datos de la que extraigo los datos con la siguiente línea: strsql = "SELECT ID, NAME, EMAIL, ...
  #1 (permalink)  
Antiguo 14/02/2003, 18:43
Avatar de Jokin  
Fecha de Ingreso: enero-2002
Mensajes: 725
Antigüedad: 23 años, 4 meses
Puntos: 1
Recuperar los últimos tres datos de una BD más rápidamente

Saludos:

Tengo una conexión con una base de datos de la que extraigo los datos con la siguiente línea:

strsql = "SELECT ID, NAME, EMAIL, WEBSITE, G_MESSAGE FROM TABLA ORDER BY ID Desc
Set grs = Server.CreateObject("ADODB.Recordset")
grs.Open strsql, my_Conn ,3

...con la idea de extraer los últimos tres registros de la base de datos (con un Do...Loop c=3)

No soy muy entendido en esto pero creo recordar que existía una forma de mover el puntero al final de la base de datos y extraer los últimos tres registros de una forma más rápida. Lo comento por que dicha tabla tiene más de 4000 registros y me da la impresión de que va algo lenta.

Lo sabe alguien?
  #2 (permalink)  
Antiguo 14/02/2003, 19:46
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 23 años, 3 meses
Puntos: 2
recorset.movelast
__________________
Manual de ASP Avanzado ;-)
  #3 (permalink)  
Antiguo 14/02/2003, 23:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
probá dejar todo tal cual está salvo esta línea:

strsql = "SELECT TOP 3 ID, NAME, EMAIL, WEBSITE, G_MESSAGE FROM TABLA ORDER BY ID Desc"
  #4 (permalink)  
Antiguo 15/02/2003, 03:42
Avatar de Jokin  
Fecha de Ingreso: enero-2002
Mensajes: 725
Antigüedad: 23 años, 4 meses
Puntos: 1
Antes de nada gracias a ambos por vuestras respuestas:

Efectivamente lo que buscaba era el movelast junto con moveprevious:

grs.movelast

y luego en el loop al final en vez de movenext:

grs.moveprevious

pero la velocidad apenas a mejorado


dazuaga, he probado lo que me indicas y no me ha dado error en esa página pero sí en otro lugar con lo que creo que después habrá que hacer algo.

Qué es lo que hace TOP 3? Donde coloca el puntero? en el último y luego lo muevo hacia atrás o en el tercero desde atrás? o estoy perdido

Gracias y un saludo
  #5 (permalink)  
Antiguo 15/02/2003, 12:24
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
el TOP Cantidad lo que hace es devolverte sólo la cantidad de registros especificada en Cantidad.

Cuales? Pues eso va a ir determinado por el ordenamiento que le des. Si ordenás descendente por ID, por ejemplo, te va a devolver los últimos 3 ingresados en el orden último, anteúltimo y antepenúltimo.
Si lo ordenás ascendente (al mismo ejemplo), te va a devolver el primero, segundo y tercero.

se entiende?

Aunque ahora me queda la duda si eso es lo que necesitás
  #6 (permalink)  
Antiguo 16/02/2003, 17:18
Avatar de Jokin  
Fecha de Ingreso: enero-2002
Mensajes: 725
Antigüedad: 23 años, 4 meses
Puntos: 1
Saludos dazuaga:

Desconocía la opción que indicas y me parece interesante, además deseo probarla, pero me surge una pregunta:

Si coloco la siguiente línea:

strsql = "SELECT TOP 3 ID, NAME, EMAIL, WEBSITE, G_MESSAGE FROM TABLA ORDER BY ID Desc
Set grs = Server.CreateObject("ADODB.Recordset")
grs.Open strsql, my_Conn ,3

Cómo consigo imprimir esos datos?

Response.write grs("G_ID")

He de hacer un loop, cómo?

Ya ves que el tema no controlo mucho

A ver si puedes echarme una mano.

Un saludo

P.D.: Me gusta mucho du avatar, es muy my original.
  #7 (permalink)  
Antiguo 16/02/2003, 17:36
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 23 años, 5 meses
Puntos: 0
Haber,,,


Do while not grs.Eof
Response.Write grs("id")
Response.Write grs("name")
Response.Write grs("email")
.....
......
grs.MoveNext
Loop


Creo que es esto lo que buscas

  #8 (permalink)  
Antiguo 17/02/2003, 01:43
Avatar de Jokin  
Fecha de Ingreso: enero-2002
Mensajes: 725
Antigüedad: 23 años, 4 meses
Puntos: 1
Saludos:

Entonces lo que hace la sentencia de TOP 3, es llevar el puntero al tercer registro desde atrás de la tabla. Gracias es lo que no entendía.

Luego obtener dichos datos es como me indicas. Perfecto. A la tarde lo pruebo a ver si me mejora en rapidez

Gracias y un saludo
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 11:08.