Foros del Web » Programando para Internet » PHP » CodeIgniter »

Codeigniter + mysql

Estas en el tema de Codeigniter + mysql en el foro de CodeIgniter en Foros del Web. Hola [email protected], Estoy usando el framework Codeigniter para programar y una base de datos mysql. Hago una consulta de eliminación de datos con subconsulta y ...
  #1 (permalink)  
Antiguo 29/03/2019, 03:25
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 11 años, 9 meses
Puntos: 2
Codeigniter + mysql

Hola [email protected],

Estoy usando el framework Codeigniter para programar y una base de datos mysql.
Hago una consulta de eliminación de datos con subconsulta y se tarda tantísimo que el final me da error timeout. Os copio un poco el código a ver si podéis darme alguna solución.
Código PHP:
 $arraytablas = array( "tabla1""tabla2""tabla3""tabla4""tabla5""tabla6");
for(
$i 0$i<count($arraytablas); $i++)
        {
            
            
$query "DELETE FROM " .$arraytablas[$i]. " where usuarioID not in (select usuarioID from tabla) and".$arraytablas[$i].".usuarioID != 0;";
            
$resultado $this->db->query($query);
            if (
$resultado)
                
$elmensaje .= "Se ha ejecutado el mantenimiento de la tabla " .$arraytablas[$i]. " satisfactoriamente...<br/><br/>";
            else
                
$elmensaje .= "No se ha podido realizar el mantenimiento de la tabla " .$arraytablas[$i]. " en estos momentos. Inténtalo de nuevo más tarde.<br/><br/>";
        }

        return 
$elmensaje
Luego recojo el resultado en el controlador y se lo paso a la vista.
Creo que el problema está en el delete porque un select de más de 2000 registros me lo hace rápido.

Alguna idea de esto?
Gracias!!
  #2 (permalink)  
Antiguo 29/03/2019, 07:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.400
Antigüedad: 13 años, 1 mes
Puntos: 774
Respuesta: Codeigniter + mysql

Usa not exists en lugar del not in, da un mejor performance, y otra cosa el delete trata de hacerlo por lotes, esto es elimina primero N registros y despues otros N y asi
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 02/04/2019, 09:31
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Codeigniter + mysql

Muchas gracias!
La consulta ha ido esta vez muy rápida.



La zona horaria es GMT -6. Ahora son las 02:25.