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

Optimizar estas sentencias SQL?

Estas en el tema de Optimizar estas sentencias SQL? en el foro de Mysql 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 07/07/2011, 14:24
Avatar de CBeneyto  
Fecha de Ingreso: noviembre-2010
Ubicación: Valencia
Mensajes: 135
Antigüedad: 13 años, 4 meses
Puntos: 7
Optimizar estas sentencias 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, 09:41
Avatar de CBeneyto  
Fecha de Ingreso: noviembre-2010
Ubicación: Valencia
Mensajes: 135
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Optimizar estas sentencias SQL?

[up]

alguna novedad?
  #3 (permalink)  
Antiguo 09/07/2011, 13:30
Avatar de CBeneyto  
Fecha de Ingreso: noviembre-2010
Ubicación: Valencia
Mensajes: 135
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Optimizar estas sentencias SQL?

[UP #2]

alguna novedad? por favor
  #4 (permalink)  
Antiguo 09/07/2011, 13:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Optimizar estas sentencias SQL?

Explico la falta de respuestas (al menos en cuanto a mi concierne): No hay mucho donde se pueda optimizar, porque en realidad estás consultando sobre una sola tabla, y en el WHERE hay uno o dos campos en todos los casos.
En esas condiciones no hay cambios que puedan aportar nada, más allá de sugerirte que uses IN(fecha, fecha, fecha...) en lugar de poner cada una separada por un OR, y el segundo caso uses índices sobre esos campos.
Fuera de eso, son consultas demasiado simples para poder hacer optimizaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

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 23:12.