Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Resultados se despliegan muy lento (http://www.forosdelweb.com/f18/resultados-despliegan-muy-lento-646213/)

Highlander 20/11/2008 09:03

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>


rogertm 20/11/2008 09:25

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 :si:

saludos y suerte con eso

Carxl 20/11/2008 10:22

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:adios:

Highlander 20/11/2008 22:11

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.

rogertm 21/11/2008 07:21

Respuesta: Resultados se despliegan muy lento
 
Cita:

Iniciado por Highlander (Mensaje 2672554)
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

Highlander 21/11/2008 11:20

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.

rogertm 21/11/2008 11:49

Respuesta: Resultados se despliegan muy lento
 
Cita:

Iniciado por Highlander (Mensaje 2673405)
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 :neurotico
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

Highlander 21/11/2008 11:55

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?

Carxl 21/11/2008 11:55

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:adios:

rogertm 21/11/2008 12:51

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


La zona horaria es GMT -6. Ahora son las 10:17.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.