SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: RadicalEd en Miércoles 5 de Julio de 2006, 17:43

Título: Consulta Lenta Y No Funciona
Publicado por: RadicalEd en Miércoles 5 de Julio de 2006, 17:43
Hola chicos de SoloCodigo, tengo un pequeño problema con este Script:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1-->$fechadesde = $_GET['ano1']."-".$_GET['mes1']."-".$_GET['dia1'];

$fechahasta = $_GET['ano2']."-".$_GET['mes2']."-".$_GET['dia2'];

echo "desde ".$fechadesde."<br>";
echo "hasta ".$fechahasta."<br><br>";
//if ($_GET["do"] == 'fp') {

$result = mysql_query("SELECT fac.numfact, fac.fechar, cli.nombre, cli.telefono, fac.fechae, tax.nombre_pro FROM facturas AS fac, alquileres AS alq, tax_productos AS tax, clientes AS cli WHERE fac.estado = 'pendiente' AND fac.cliente = cli.cedula AND fac.fechae < '$fechahasta' AND fac.fechae > '$fechadesde' ORDER BY fac.fechae LIMIT 0,15", $link);


if ($row = mysql_fetch_array($result)){

   echo "<span class='punteado'>Alquileres Proxima Semana";

   echo "<table border ='1'> \n";

   echo "<tr><td><b>Factura</b></td><td><b>Fecha Devolución</b></td><td><b>Pantalon</b></td><td><b>Camisa</b></td><td><b>Corbata</b></td><td><b>Nombre</b></td><td><b>Teléfono</b></td><td><b>Fecha de Entrega</b></td></tr></b></span> \n";
   do {

      echo "<tr><td><div align='center'>".$row["numfact"]."</div></td><td><div align='right'>".$row["fechar"]."</div></td><td></td><td></td><td></td><td>".$row["nombre"]."</td><td><div align='right'>".$row["telefono"]."</div></td><td><div align='right'>".$row["fechae"]."</div></td></tr>";

   } while ($row = mysql_fetch_array($result));

   echo "</table> \n";

} else {

echo "¡ No se ha encontrado ningún registro !";

};



}else{

echo "peticion vacia";

};<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
Lo que pasa es que se demora mucho en ejecutarse la consulta y al final me saca este error:
Fatal error: Maximum execution time of 30 seconds exceeded in c:\appserv\www\invtaxiros\reportes.php on line 119
Me pueden ayudar por fis, no encuentro cual sea el error, los datos los ahi, osea, existen pero no me quiere ejecutar nada la consulta, por que sera?????
Título: Re: Consulta Lenta Y No Funciona
Publicado por: x.cyclop en Lunes 14 de Agosto de 2006, 21:42
Intenta aumentando los segundos de max_execution_time y/o de max_input_time en el php.ini. :P

Uh, no vi la fecha. Perdón. :ph34r:
Título: Re: Consulta Lenta Y No Funciona
Publicado por: Altareum en Lunes 14 de Agosto de 2006, 22:17
Che Radical, provaste usando un explain ???? Cuando las tablas tienen gran cantidad de datos y unis varias tablas, mysql suele tener problemas con los índices, con lo cual las consultas tardan mucho tiempo.

Prova haciendo:
Código: Text
  1. EXPLAIN SELECT fac.numfact, fac.fechar, cli.nombre, cli.telefono, fac.fechae, tax.nombre_pro FROM facturas AS fac, alquileres AS alq, tax_productos AS tax, clientes AS cli WHERE fac.estado = 'pendiente' AND fac.cliente = cli.cedula AND fac.fechae &#60; '&#036;fechahasta' AND fac.fechae &#62; '&#036;fechadesde' ORDER BY fac.fechae LIMIT 0,15
  2.  

Y fijate lo que te tira, ahí vas a tener una idea de como mysql está interpretando la consulta, y así poder corregirla...


Altareum.