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

Mejorar tiempo de respuesta

Estas en el tema de Mejorar tiempo de respuesta en el foro de ASP Clásico en Foros del Web. Hola tengo una una duda que paso a explicaros. Tengo un foro pequeño, que lo tnego dividido en tres tablas, por un aldo los datos ...
  #1 (permalink)  
Antiguo 16/03/2006, 09:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 6 meses
Puntos: 1
Mejorar tiempo de respuesta

Hola tengo una una duda que paso a explicaros.

Tengo un foro pequeño, que lo tnego dividido en tres tablas, por un aldo los datos del usuario, por otro las preguntas y por ultimo las respuestas.
Mi duda y problema es que cuando quiero ver un pregunta con sus respectivas respuestas y existen más de 20 respuestas la espera se hace insoportable.

A la hora de visualizar lo hago de la siguiente forma recibe la pagina el id de la pregunta y luego busca el id en la tabla preguntas. De esa tabla coge el id del usuario y busca sus datos para visualizarlos. Y asi tambien hace con al tabla respuesta. Por esto si tiene muchas respuestas tarda muchisimo pq tiene que buscar los datos de cada usuario y mostrarlo.
He hecho una prueba haciendo k no me muestre los datos del usuario y la verdad es que va como un tiro.

El codigo que tengo es el siguiente. Espero k me podais ayudar a mejorar el codigo.

(Solo muestro el codigo de las respuestas, y he kitado el html, igual ahy fallo de sintaxis sobre algun %> o falta)
Código:
<%
Set rsrespuesta = Server.CreateObject ("ADODB.RecordSet")
sql3="select Titulo,Autor,Mensaje,Fecha from Respuesta where Dequien=" &vid&" ORDER BY id asc"
rsrespuesta.Open sql3,conn,3,1
do while not rsrespuesta.eof  %>
<%=rsrespuesta("Autor")%> 
<%
quien=rsrespuesta("autor")
sqlnivel2="select Usuario,Email,Web,Ver,puntos,nivel,fecha from usuario where Usuario= '" &quien&"'"
set rsnivel2=Conn.Execute(sqlnivel2) 
%>
<%=rsnivel2("nivel")%>
Nº Mensajes:<%=rsnivel2("puntos")%> 
Alta: <%=rsnivel2("fecha")
rsnivel2.close 
Set rsnivel2=nothing
%>
<td height="10%" class="texto" valign="top"><span class="escritoporforo"><%=rsrespuesta("titulo")%></span><br>
<span class="escritopor">Enviado el: <%=rsrespuesta("fecha")%><br>
<br>
 
<%
descsalto4 = replace(rsrespuesta("mensaje"),chr(13),"<br>") %>
<%=descsalto4%> 
<%		
rsrespuesta.movenext
loop
%>
Lo dicho espero k me podais ayudar a mejorar el coido para que sea menos lento.
  #2 (permalink)  
Antiguo 16/03/2006, 09:46
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
A reserva de que tengas tu base de datos correctamente normalizada, no es necesario abrir dos recordsets para, esto, con uno basta

Código:
SELECT a.titulo, a.autor,a.mensaje, a.fecha, b.* FROM Respuesta a INNER JOIN usuario b ON a.autor = b.usuario WHERE a.Dequien=" &vid&" ORDER BY a.id asc"
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 16/03/2006, 10:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 6 meses
Puntos: 1
Muchas gracias, funciona y se nota una gran mejoria.

Tb quisiera saber a k es debido este error.

Microsoft OLE DB Provider for ODBC Drivers error '8007000e'
[Microsoft][Controlador ODBC Microsoft Access] No hay espacio suficiente en el disco temporal.
/conexion.asp, línea 27
  #4 (permalink)  
Antiguo 16/03/2006, 10:34
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Cual es la linea 27?
Nunca habia visto ese error, quizas tambien te ayude hacer una busqueda en google con ese mismo numero de error.


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 16/03/2006, 10:40
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 6 meses
Puntos: 1
la linea 27 es donde se establece la conexion con la bbdd en access.

He buscado por el foro y nada de nada
  #6 (permalink)  
Antiguo 16/03/2006, 11:11
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
Acá tenés una respuesta sobre ese error:
http://www.aspfaq.com/show.asp?id=2301
__________________
...___...
  #7 (permalink)  
Antiguo 17/03/2006, 02:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 6 meses
Puntos: 1
Gracias y duda

Ok, gracias por el link. Por lo que he leido es que se crean muchos archivos temporales y poniendo
conn.mode = 1 ' adModeRead

lo que hace es que se abra en modo lectura y no crea archivos temporales.

Esto es así?

Y yo establezco así la conexión, donde tendría que poner el adModeRead.

Pagina conexión.asp
Código:
sub usu2(conn)
strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../Basesdedatos/foro2.mdb")
set conn = Server.Createobject("adodb.connection")
conn.open strconn
end sub
y luego la pagina donde se muestran los resultados.asp
Código:
usu2 conn
Set rs = Server.CreateObject ("ADODB.RecordSet")
sql="select a.Titulo,a.Autor,a.Mensaje,a.Fecha,b.Usuario,b.Email,b.Web,b.Ver,b.puntos,b.nivel,b.fecha,a.Contestaciones,Tipo from pregunta a INNER JOIN usuario b ON a.Autor=b.Usuario  where Id= " &vid&""
rs.Open sql,conn,3,1
do while not rs.eof
bla, bla, bla

rs.movenext
loop


Muchas gracias por las molestias tomadas, y nuevamente muchas gracias
  #8 (permalink)  
Antiguo 22/03/2006, 03:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 6 meses
Puntos: 1
Nadie me puede ayudar a solucionar este fallo?
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 10:01.