Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Optimizar una consulta

Estas en el tema de Optimizar una consulta en el foro de Mysql en Foros del Web. Que tal al parecer tengo una consulta pero me tarda demasiado en responder, puede ser que lo tengo hecho de manera muy simple pero funciona ...
  #1 (permalink)  
Antiguo 10/12/2014, 15:57
 
Fecha de Ingreso: abril-2009
Mensajes: 100
Antigüedad: 15 años
Puntos: 0
Optimizar una consulta

Que tal al parecer tengo una consulta pero me tarda demasiado en responder, puede ser que lo tengo hecho de manera muy simple pero funciona :), espero me ayuden a optimizarla para mejorar el rendimiento.

Consulta:
Lo que me arroja es las noticias que se han registrado en cada hora del dia, es decir me muestra todas las noticias digamos de 11:00 hasta las 11:59, luego de las 12:00 hasta las 12:59 y asi suceesivamente.
Hago un limite de las 10 horas con noticias, luego otra consulta donde obtengo las noticias de cada hora que obtuve de la primer consulta.

Luego obtengo la fecha y dia actual y los pongo en español, junto todo en una variable y lo muestro.

Localmente trabaja rapido pero cuando lo puse en el servidor la consulta tarda hasta 20 seg en mandarme los datos.

Código PHP:
Ver original
  1. $horas = new query;
  2.     $horas->validaquery("SELECT DISTINCT YEAR(fecha_publicacion) as año, MONTH(fecha_publicacion) as mes, DAY(fecha_publicacion) as dia, HOUR(fecha_publicacion) as horas FROM tintero.articulos order by id_articulo desc limit 10");
  3.         $resu = $horas->devuelveresult();
  4.         while($row = mysql_fetch_array($resu)){
  5.             $year = $row["año"];
  6.             $month = $row["mes"];
  7.             $day = $row["dia"];
  8.             $hour = $row["horas"];
  9.  
  10.             $segundo = "";
  11.            
  12.             $otro = new query;
  13.             $otro->validaquery("SELECT titulo, id_seccion, id_articulo, fecha_publicacion,MINUTE(fecha_publicacion) as minuto  from tintero.articulos where fecha_publicacion BETWEEN '$year-$month-$day $hour:00:00' AND '$year-$month-$day $hour:59:59' order by fecha_publicacion desc");
  14.                 $resultado = $otro->devuelveresult();
  15.                 while($rww = mysql_fetch_array($resultado)){
  16.                     $titulo = $rww["titulo"];
  17.                     $tipo = $rww["id_seccion"];
  18.                     $id_articulo = $rww["id_articulo"];
  19.                     $fecha = $rww["fecha_publicacion"];
  20.                     $minuto = $rww["minuto"];
  21.  
  22.                     $tiempo = strlen($minuto);
  23.  
  24.                     if($tiempo == 1){
  25.                         $minut = "0".$minuto;
  26.                     } else {
  27.                         $minut = $minuto;
  28.                     }
  29.  
  30.                     $segundo.="<tr>
  31.                                 <td style='width:47px;border-right: 1px solid rgba(96, 96, 96, 1)'>
  32.                                     <div style='float: right;margin-right: -3px;'>
  33.                                         <span style='font-size: 12px;font-family: roboto;'>:$minut</span>
  34.                                         <span style='color:#4CBD25;font-size: 12px;' class='glyphicon glyphicon-record'></span><span id='giro' class='glyphicon glyphicon-play' style='font-size: 12px;color:rgba(96, 96, 96, 1)'></span></td>
  35.                                     </div>
  36.                                 <td style='padding:2px'><a onclick='verNoticia(".$id_articulo.", ".$tipo.")' style='cursor:pointer;font-family: roboto;'>$titulo</a></td>
  37.                               </tr>";
  38.                 }
  39.  
  40.  
  41.  
  42.             $primero.='<tr>
  43.                         <td style="border-right: 1px solid rgba(96, 96, 96, 1);width:58px;background-color:#6EB42F"><span style="background-color:#6EB42F;color:#FFF;float: right;font-family: roboto;">&nbsp;'.$hour.":00".'&nbsp;</span></td>
  44.                        </tr>
  45.                        <tr>
  46.                         '.$segundo.'
  47.                        </tr>';
  48.         }
  49.  
  50.             $date = explode(" ", $fecha);
  51.             $año = date("Y");
  52.             $dia = date("l");
  53.             $numDia = date("d");
  54.             $mes = date("F");
  55.  
  56.             if($dia == "Monday"){$diaEspanol = "Lunes";}
  57.             else if($dia == "Tuesday"){$diaEspanol = "Martes";}
  58.             else if($dia == "Wednesday"){$diaEspanol = "Miércoles";}
  59.             else if($dia == "Thursday"){$diaEspanol = "Jueves";}
  60.             else if($dia == "Friday"){$diaEspanol = "Viernes";}
  61.             else if($dia == "Saturday"){$diaEspanol = "Sabado";}
  62.             else if($dia == "Sunday"){$diaEspanol = "Domingo";}
  63.  
  64.             if($mes == "January"){$mesEspanol = "Enero";}
  65.             else if($mes == "February"){$mesEspanol = "Febrero";}
  66.             else if($mes == "March"){$mesEspanol = "Marzo";}
  67.             else if($mes == "April"){$mesEspanol = "Abril";}
  68.             else if($mes == "May"){$mesEspanol = "Mayo";}
  69.             else if($mes == "June"){$mesEspanol = "Junio";}
  70.             else if($mes == "July"){$mesEspanol = "Julio";}
  71.             else if($mes == "August"){$mesEspanol = "Agosto";}
  72.             else if($mes == "September"){$mesEspanol = "Septiembre";}
  73.             else if($mes == "October"){$mesEspanol = "Octubre";}
  74.             else if($mes == "November"){$mesEspanol = "Noviembre";}
  75.             else if($mes == "December"){$mesEspanol = "Diciembre";}
  76.  
  77.         $tabla = '<table align="center" style="width:100%">
  78.                     <tr>
  79.                         <td align="center" style="font-family:roboto;font-size: 20px;background-color: #6EB42F;color: #FFF;">
  80.                             <table style="width: 100%;" align="center">
  81.                             <tr>
  82.                               <td><h4 style="font-family: roboto;font-size:19px;color: #FFF;">&nbsp;&nbsp;Tinta Fresca</h4></td>
  83.                               <td><img style="float:right;margin-right:6px;width:30px" src="IMG/otras/secciones/TINTA_FRESCA.png"></td>
  84.                             </tr>
  85.                             </table>
  86.                         </td>
  87.                     </tr>
  88.                     <tr>
  89.                         <td align="center" style="font-family:roboto">'.$diaEspanol.' '.$numDia.' de '.$mesEspanol.' de '.$año.'</td>
  90.                     </tr>
  91.                     <tr>
  92.                         <td><hr style="margin-top: 0px;margin-bottom: 5px;border-color: #4CBD25;border-width: 2px 0px 0px;"></td>
  93.                     </tr>
  94.                     </table>
  95.  
  96.                   <div style="height:234px;overflow:auto;font-size:13px">
  97.                       <table>
  98.                         '.$primero.'
  99.                       </table>
  100.                   </div>';
  101.  
  102.                 echo $tabla;
  #2 (permalink)  
Antiguo 11/12/2014, 05:05
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Optimizar una consulta

Creo que si lo pasas al subforo de MYSQL solamente tu consulta SQL vas a obtener mayores respuestas... no uses código PHP ahí.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: fecha, php, select, tabla, variable
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 06:36.