Foros del Web » Programando para Internet » PHP »

Optimizar estas sentencias PHP/SQL?

Estas en el tema de Optimizar estas sentencias PHP/SQL? en el foro de PHP en Foros del Web. Saludos compañeros, tengo unos problemillas de estabilidad y fluidez en mi portal y me gustaria optimizar un poco las sentencias basicas de mi portal... Estas ...
  #1 (permalink)  
Antiguo 08/07/2011, 05:04
Avatar de CBeneyto  
Fecha de Ingreso: noviembre-2010
Ubicación: Valencia
Mensajes: 135
Antigüedad: 10 años, 5 meses
Puntos: 7
Optimizar estas sentencias PHP/SQL?

Saludos compañeros, tengo unos problemillas de estabilidad y fluidez en mi portal y me gustaria optimizar un poco las sentencias basicas de mi portal...

Estas sentencias son las siguientes...

SENTENCIA A: Top 10)

Código PHP:
<?php $l 2;
           
       
//dia donde vamos a restar
            
$dia=strftime"%d"time() );
            
            
//dia actual
            
$diaB=strftime"%d"time() );
            
//mes actual
            
$mes=strftime"%m"time() );
            
//año actual
            
$ano=strftime"%Y"time() );
            
            
//en caso de que el dia sea 1
            
if( $diaB == ){
            
$dia1="0$diaB";
            
$dia2="0$diaB";
            
$dia3="0$diaB";
            
$dia4="0$diaB";
            
$dia5="0$diaB";
            
$dia6="0$diaB"; }
            
            if( 
$diaB == ){
            
$dia1=$diaB-1;
                 
$dia1="0$dia1";
            
$dia2=$diaB-1;
                
$dia2="0$dia2";
            
$dia3=$diaB-1;
                
$dia3="0$dia3";
            
$dia4=$diaB-1;
                
$dia4="0$dia4";
            
$dia5=$diaB-1;
                
$dia5="0$dia5";
            
$dia6=$diaB-1;
                
$dia6="0$dia6";}
            
            if( 
$diaB == ){
            
$dia1=$diaB-2;
                 
$dia1="0$dia1";
            
$dia2=$diaB-2;
                
$dia2="0$dia2";
            
$dia3=$diaB-2;
                
$dia3="0$dia3";
            
$dia4=$diaB-2;
                
$dia4="0$dia4";
            
$dia5=$diaB-2;
                
$dia5="0$dia5";
            
$dia6=$diaB-1;
                
$dia6="0$dia6";}
            
            if( 
$diaB == ){
            
$dia1=$diaB-3;
                 
$dia1="0$dia1";
            
$dia2=$diaB-3;
                
$dia2="0$dia2";
            
$dia3=$diaB-3;
                
$dia3="0$dia3";
            
$dia4=$diaB-3;
                
$dia4="0$dia4";
            
$dia5=$diaB-2;
                
$dia5="0$dia5";
            
$dia6=$diaB-1;
                
$dia6="0$dia6";}
            
            if( 
$diaB == ){
            
$dia1=$diaB-5;
                 
$dia1="0$dia1";
            
$dia2=$diaB-5;
                
$dia2="0$dia2";
            
$dia3=$diaB-4;
                
$dia3="0$dia3";
            
$dia4=$diaB-6;
                
$dia4="0$dia4";
            
$dia5=$diaB-2;
                
$dia5="0$dia5";
            
$dia6=$diaB-1;
                
$dia6="0$dia6";}
            
            if( 
$diaB == ){
            
$dia1=$diaB-6;
                 
$dia1="0$dia1";
            
$dia2=$diaB-5;
                
$dia2="0$dia2";
            
$dia3=$diaB-4;
                
$dia3="0$dia3";
            
$dia4=$diaB-3;
                
$dia4="0$dia4";
            
$dia5=$diaB-2;
                
$dia5="0$dia5";
            
$dia6=$diaB-1;
                
$dia6="0$dia6";}
            
            if( 
$diaB == ){
            
$dia1=$diaB-6;
                 
$dia1="0$dia1";
            
$dia2=$diaB-5;
                
$dia2="0$dia2";
            
$dia3=$diaB-4;
                
$dia3="0$dia3";
            
$dia4=$diaB-3;
                
$dia4="0$dia4";
            
$dia5=$diaB-2;
                
$dia5="0$dia5";
            
$dia6=$diaB-1;
                
$dia6="0$dia6";}
            
            if( 
$diaB 7) {
            
                
//modificaciones variables basicas
                
if($diaB 9) { $dia1=$diaB-7;
                                     
$dia1="0$dia1"; }
                else { 
$dia1=$diaB-7
                            
$dia1="$dia1"; }
                
                if(
$diaB 9) { $dia2=$diaB-6;
                                     
$dia2="0$dia2"; }
                else { 
$dia2=$diaB-6
                            
$dia2="$dia2"; }
                
                if(
$diaB 9) { $dia3=$diaB-5$dia3="0$dia3"; }
                else { 
$dia3=$diaB-5$dia3="$dia3"; }
                
                if(
$diaB 9) { $dia4=$diaB-4$dia4="0$dia4"; }
                else { 
$dia4=$diaB-4$dia4="$dia4"; }
                
                if(
$diaB 9) { $dia5=$diaB-3$dia5="0$dia5"; }
                else { 
$dia5=$diaB-3$dia5="$dia5"; }
                
                if(
$diaB 9) { $dia6=$diaB-2$dia6="0$dia6"; }
                else { 
$dia6=$diaB-2$dia6="$dia6"; }

            
/*$dia2=$diaB-6;
                $dia2="0$dia2";
            $dia3=$diaB-5;
                $dia3="0$dia3";
            $dia4=$diaB-4;
                $dia4="0$dia4";
            $dia5=$diaB-3;
                $dia5="0$dia5";
            $dia6=$diaB-2;
                $dia6="0$dia6";*/
                
                
}


            
//sentencias SQL
            
$fecha_1="date='$dia1/$mes/$ano'";
            
$fecha_2="date='$dia2/$mes/$ano'";
            
$fecha_3="date='$dia3/$mes/$ano'";
            
$fecha_4="date='$dia4/$mes/$ano'";
            
$fecha_5="date='$dia5/$mes/$ano'";
            
$fecha_6="date='$dia6/$mes/$ano'";
            
$fecha_7="date='$diaB/$mes/$ano'";
            
            
            
///Debugger
            /*echo $fecha_1;
            echo $fecha_2;
            echo $fecha_3;
            echo $fecha_4;
            echo $fecha_5;
            echo $fecha_6;
            echo $fecha_7;*/
            
 
$sentencia mysql_query("SELECT * from noticias WHERE ($fecha_1 OR $fecha_2 OR $fecha_3 OR $fecha_4 OR $fecha_5 OR $fecha_6 OR $fecha_7)  order by descargados desc limit 10");
SENTENCIA B: Muestra ultimas noticias)
Código PHP:
SELECT from noticias WHERE validated='1' AND (tipo='PSP' OR tipo='NDS' OR tipo='PS3' OR tipo='XBOX360' OR tipo='PC' OR tipo='MAC' OR tipo='Wii') AND (salida='ESTRENO' OR salida='ESPECIAL') OR (tipo='PELICULA' OR tipo='SERIE') AND (salida='ESTRENO' OR salida='ESPECIAL' OR salida='NUEVO') AND validated='1' order by id desc limit 24 
SENTENCIA C: Listado)
Código PHP:
<?php

        
        
if($_GET[go] == 'nds'){ $filtring " where tipo='NDS' AND validated='1'"; }
        
        if(
$_GET[go] == 'wii'){ $filtring " where tipo='Wii' AND validated='1'"; }

        if(
$_GET[go] == 'psp'){ $filtring "  where tipo='PSP' AND validated='1'"; }    

        if(
$_GET[go] == 'x360'){ $filtring "  where tipo='XBOX360' AND validated='1'"; }    
        
        if(
$_GET[go] == 'pc'){ $filtring "  where tipo='PC' AND validated='1'"; }    
        
        if(
$_GET[go] == 'mac'){ $filtring "  where tipo='MAC' AND validated='1'"; }    

        if(
$_GET[go] == 'peliculas'){ $filtring "  where tipo='PELICULA' AND validated='1'"; }

        if(
$_GET[go] == 'ps3'){ $filtring "  where tipo='PS3' AND validated='1'"; }

        if(
$_GET[go] == 'series'){ $filtring "  where tipo='SERIE' AND validated='1'"; }    

        if(
$_GET[go] == 'todo'){ $filtring ' '; }        

        if(!
$_GET[pag]){ $paging "0";

        } else {
         
        
$suk $_GET[pag]*24-24;
        
$paging $suk;
        }

        
$kik mysql_query("SELECT * from noticias $filtring order by id desc limit $paging,24");
             
//contamos cuantos resultados hay
             
$kiktotalmysql_query("SELECT * from noticias $filtring");
        
        
$is 0?>
SENTENCIA D: Buscador)
Código PHP:
mysql_query("SELECT * from noticias where validated='1' AND titulo LIKE '%$min%' OR titulo LIKE '%$max%' "); 

¿Como las podria optimizar?
Evidentemente en la del TOP (que utilizo PHP y se que se podria usar solo SQL) se puede optimizar MUCHO... pero no se como...

Ayuda!
  #2 (permalink)  
Antiguo 08/07/2011, 05:13
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 13 años
Puntos: 326
Respuesta: Optimizar estas sentencias PHP/SQL?

Sentencia B
Código:
SELECT * FROM NOTICIAS ORDER BY `id` DESC LIMIT 5
? No te vale así? xD

Sentencia C
Código PHP:
if(isset($_GET['go'])) { 
      
$go struppercase($_GET['go']);
      if(
go != "TODO" $filtering " WHERE `tipo`='".$go."' AND `validated`=1";

      if(!
$_GET[pag]){ 
        
$paging "0";

        } else {
         
        
$suk $_GET[pag]*24-24;
        
$paging $suk;
        }

        
$kik mysql_query("SELECT * from noticias $filtering order by id desc limit $paging,24");
             
//contamos cuantos resultados hay
             
$kiktotalmysql_num_rows($kik);
        
        
$is 0
Esta tendría dos problemas: "PELICULAS" y "SERIES" no las encontraría (pues buscaria tipo PELICULAS cuando es PELICULA...). Y deberías tratar el GET antes de recibirlo :)
  #3 (permalink)  
Antiguo 08/07/2011, 05:42
Avatar de CBeneyto  
Fecha de Ingreso: noviembre-2010
Ubicación: Valencia
Mensajes: 135
Antigüedad: 10 años, 5 meses
Puntos: 7
Respuesta: Optimizar estas sentencias PHP/SQL?

A mi me han comentado que es mejor utilizar las sentencias INNER JOIN o similar en vez de WHERE que son mejores o mas rapidas....

¿es cierto?
Como podria adaptar las sentencias de arriba a INNER JOIN?

Saludos
  #4 (permalink)  
Antiguo 08/07/2011, 05:44
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 13 años
Puntos: 326
Respuesta: Optimizar estas sentencias PHP/SQL?

Cita:
Iniciado por CBeneyto Ver Mensaje
A mi me han comentado que es mejor utilizar las sentencias INNER JOIN o similar en vez de WHERE que son mejores o mas rapidas....

¿es cierto?
Como podria adaptar las sentencias de arriba a INNER JOIN?

Saludos
Eso deberías preguntarlo en la sección de SQL xD

Etiquetas: optimización, sentencias, sql
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 14:07.