Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/06/2012, 14:34
Avatar de patriciomase
patriciomase
 
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 11 años, 11 meses
Puntos: 34
optimizando insert muchos registros

hola. Tengo un script que inserta unos 50000 registros en una bd y estoy tratando de optimizarlo para tardar lo menos posible.

Comencé con un bucle que insertaba 1 a 1 los registros y tardaba bastante.Como unos 15 minutos o mas.

Ahora estoy armando consultas insert de (en este momento) 2500 registros, y aunque arranca muy rapido, luego la velocidad comienza a caer y supera los 10 minutos.

Así armo la consulta con php:
Código PHP:
Ver original
  1. $consulta = "insert into players values ";
  2.  
  3. $i = 0;
  4.  
  5.     while($i < count($xml->players)){  
  6.         $consulta = "insert into players values ";
  7.         $j = 0;
  8.         while($j < 2500 && $i < count($xml->players)){ 
  9.                 $consulta .= "(".
  10.                         $xml->players[$i]['id'].",'".$xml->players[$i]['player']."','".
  11.                         $xml->players[$i]['name']."','".$xml->players[$i]['coords']."'),";
  12.  
  13.         $i++;
  14.         $j++;
  15.     }
  16.                 $consulta = substr ($consulta, 0, -1);
  17.                 echo $consulta."<br/>";    
  18.                 $db->ConsultaInsert($consulta);
  19.     }

mi pregunta es "cual es el valor optimo para insertar??" de a cuantos meto?? estuve probando con valores mas altos (4000, 5000) pero me da errores que creo que pueden ser por la longitud de la consulta ...

sugerencias??