Foros del Web » Programando para Internet » PHP »

Resultados se despliegan muy lento

Estas en el tema de Resultados se despliegan muy lento en el foro de PHP en Foros del Web. Buenas trabajo con WampServer y cuando muestro los resultados en un listado se demora demasiado alrededor de 35 sec para 2100 resultados. Parte del codigo: ...
  #1 (permalink)  
Antiguo 20/11/2008, 09:03
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Resultados se despliegan muy lento

Buenas trabajo con WampServer y cuando muestro los resultados en un listado se demora demasiado alrededor de 35 sec para 2100 resultados.

Parte del codigo:
Código:
$consulta = "SELECT ID_CLIENTE, APE_CLIENTE_1, NOM_CLIENTE_1, DIR_CLIENTE, N_CLIENTE, NAP, TELEFONO_CLIENTE, LOCALIDAD, NACIONALIDAD, VENDEDORA FROM cliente WHERE ESTADO_CLIENTE ='a' ORDER BY ID_CLIENTE DESC"; 
$resultado = mysql_query($consulta,$link);
La parte donde muestro los resultados:
Código:
<table width="100%" border="0">
 	  <tr><td width="3%" nowrap="nowrap">&nbsp;</td>  
      <td width="4%" colspan="3" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Acci&oacute;n</td>
      <td width="18%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Cliente</td>       
	  <td width="18%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Dirección</td>      
	  <td width="4%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">NAP</td>
	  <td width="9%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Teléfono</td>             	 
	  <td width="16%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Localidad</td>
	  <td width="14%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Nacionalidad</td>
	  <td width="14%" align="center" nowrap="nowrap" background="img/menu.png" bgcolor="#AEB8DD" class="style0">Vendedora</td>
	  <?php 
	while ($datos = mysql_fetch_array($resultado)){
	if ($i%2==0)
	{
		$color0='#d5d7fd';
	} else
	{
		$color0='#e4e5fd';
	} 
	$codigo=$datos["ID_CLIENTE"];$valor='no';
	?>
	 <tr class="enlace" bgcolor='<?php echo $color0 ?>' onMouseOver="overTD(this,'#acb0bc');" onMouseOut="outTD(this,'<?php echo $color0 ?>');">
	 <td class="style1"><?php echo $i+1;?></td>  
      <td align="center"><?php echo"<a href='?accion=Mod&amp;codigo=$codigo&amp;valor=$valor&amp;desde=$desde&amp;mostrar=$mostrar'><img src='img/modificar.png' border='0' title='Modificar/Ver Cliente'/></a>";?></td>
      <td align="center"><?php echo"<a href='?accion=Baja&amp;codigo=$codigo&amp;valor=$valor&amp;desde=$desde&amp;mostrar=$mostrar'><img src='img/eliminar.png' border='0' title='Baja Cliente'/></a>";?></td>
      <td align="center"><?php echo"<a href='?accion=Info&amp;codigo=$codigo&amp;valor=$valor&amp;desde=$desde&amp;mostrar=$mostrar'><img src='img/informacion.png' border='0' title='Información Compras Cliente'/></a>";?></td>
      <td valign="middle" class="style1"><?php echo $datos["APE_CLIENTE_1"]?>&nbsp;<?php echo $datos["NOM_CLIENTE_1"]?>&nbsp;</td>
	  <td class="style1"><?php echo ($datos["DIR_CLIENTE"])?>&nbsp;<?php echo ($datos["N_CLIENTE"])?></td>      
	  <td align="center" class="style1"><?php echo ($datos["NAP"])?></td>             	 
	  <td align="center" class="style1"><?php echo ($datos["TELEFONO_CLIENTE"])?></td>
	  <td align="center" class="style1"><?php echo ($datos["LOCALIDAD"])?></td>
	  <td align="center" class="style1"><?php $nacionalidad=$datos["NACIONALIDAD"];
$consulta0 = "SELECT PAI_PK, PAI_NOMBRE FROM pai_pais WHERE PAI_PK = '$nacionalidad'"; 
$resultado0 = mysql_query($consulta0,$link);
$datos0 = mysql_fetch_array($resultado0);
echo utf8_encode($datos0["PAI_NOMBRE"]); 
		 ?></td>
	  <td align="center" class="style1"><?php $vendedora=$datos["VENDEDORA"];
$consulta0 = "SELECT ID_EMP, APE_EMP, NOM_EMP FROM emp WHERE ID_EMP = '$vendedora'"; 
$resultado0 = mysql_query($consulta0,$link);
$datos0 = mysql_fetch_array($resultado0);
echo ($datos0["APE_EMP"]); 
echo " "; 
echo ($datos0["NOM_EMP"]); 
		 ?></td>
	 </tr>
  #2 (permalink)  
Antiguo 20/11/2008, 09:25
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: Resultados se despliegan muy lento

Pero 35 seg no es nada para una consulta que te devuelve mas de 2000 resultados y una armazón con tablas... mejor metele un LIMIT a la consulta o usa un código para paginar los resultados y usa DIV en lugar de tablas, el server te lo agradecerá siempre

saludos y suerte con eso
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 20/11/2008, 10:22
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Resultados se despliegan muy lento

Hola Highlander....

Fuera de las recomendaciones que te da rogertm...

Ten en cuenta que los sql comen mas recursos cuando aplicas "order by, desc". Igual ya entra a jugar el factor diseño, factor server, muchas cosas juntas...

Si solo quieres ver como ejecuta mysql direcatemente la consulta y ver su tiempo de ejecución antes de la consulta ponle 'explain', con eso te darás una idea de como trata el motor tu consulta.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 20/11/2008, 22:11
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Resultados se despliegan muy lento

Gracias por las sugerencias, cuando te refieres a DIV es un css? como seria eso lo uso muy basico aun.
  #5 (permalink)  
Antiguo 21/11/2008, 07:21
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: Resultados se despliegan muy lento

Cita:
Iniciado por Highlander Ver Mensaje
Gracias por las sugerencias, cuando te refieres a DIV es un css? como seria eso lo uso muy basico aun.
Si exactamente a eso me refiero, te ahorrarías miles de lineas de código... te recomiendo el foro de CSS
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #6 (permalink)  
Antiguo 21/11/2008, 11:20
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Resultados se despliegan muy lento

Haber parece que me ilumine, yo podria por ejemplo usar un ciclo para mostrar los resultados y dentro de el insertar un DIV para ordenar los resultados, en vez de una tabla html.
  #7 (permalink)  
Antiguo 21/11/2008, 11:49
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: Resultados se despliegan muy lento

Cita:
Iniciado por Highlander Ver Mensaje
Haber parece que me ilumine, yo podria por ejemplo usar un ciclo para mostrar los resultados y dentro de el insertar un DIV para ordenar los resultados, en vez de una tabla html.
A ver... que no cunda el pánico
El problema es que para tabular datos, que es lo que estas haciendo tu, se usan tablas, pero bien usadas, por ejemplo:
Código php:
Ver original
  1. <div id="datos">
  2.     <table class="tabla">
  3.         <tr>
  4.             <th style="width:5px;">ID</th>
  5.             <th>Accion</th>
  6.             <th>Cliente</th>
  7.             <th>Direccion</th>
  8.             <th>Tlfn</th>
  9.         </tr>
  10.         <!-- a partir de aqui todos tu datos y script en PHP -->
  11.         <tr>
  12.             <td style="width:5px;">ID</td>
  13.             <td>tus datos</td>
  14.             <td>tus datos</td>
  15.             <td>tus datos</td>
  16.             <td>tus datos</td>
  17.         </tr>
  18.     </table>
  19. </div>
y le metes una hoja de estilos CSS y alli le haces el diseño completo a la tabla, color de fondo, color del texto, fuente, links y lo que sea que quieras hacer, te pongo un ejemplo de un codigo que tengo ahora mismo:
Código css:
Ver original
  1. #datos table{
  2.     margin: 0;
  3.     width: 100%;
  4.     border-left: solid 1px #ccc;
  5.     border-right: solid 1px #ccc;
  6. }
  7. #datos table th{
  8.     color: #fff;
  9.     text-align: left;
  10.     background: #464646;
  11.     padding: 7px;
  12. }
  13. #datos table td{
  14.     border-bottom: solid 1px #ccc;
  15.     padding: 10px;
  16. }
Donde #datos se aplicara al div con ese id y table se aplicara a la etiqueta html table dentro de ese div y asi sucesivamente... asi limpias el codigo de tu tabla y no haces trabajar tanto al navegador en este caso, haciendolo resolver tanta etiqueta...

espero entiendas mas o menos este ejemplito... saldos
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #8 (permalink)  
Antiguo 21/11/2008, 11:55
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Resultados se despliegan muy lento

Ok creo entender tu ejemplo, esto realmente proporcionara un cambio en el desempeño del navegador, algo digamos que se note?
  #9 (permalink)  
Antiguo 21/11/2008, 11:55
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Resultados se despliegan muy lento

Sobre tablas en xhtml...

Pues si lo haces de una manera acertada, ayudarás al navegador a mostrar el html mas rápido por que no entraría a "corregir" posibles errores.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #10 (permalink)  
Antiguo 21/11/2008, 12:51
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: Resultados se despliegan muy lento

Y si usas FF, hay algunas extenciones que te ayudan a trabajar con tu codigo XHTML como HTML Validator o FireBug
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
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:03.