Dentro de una tabla (TABLA A), hay un campo donde se pueden ingresar números, estos son separamos por comas o por guiones en el caso que sean rangos (45,46,47 o 45-50). Hice un script que borra todos los registros, toma estos campos y los abre para luego insertarlos en filas separadas (TABLA B):
Ejemplo:
Rango: 45,46,47,48
Crea 4 Insert dentro de otra tabla (TABLA B), esto es para tener un mejor manejo de la información.
El script funciona perfectamente. El problema es que corre cada una hora y inserta mas de 130.000 registros, lo que a la larga colapsa el servidor.
Lo que se me ocurrió para optimizar este proceso, es pasar toda la carga a PHP y hacer un select desde la tabla con los campos del tipo (45,46,47… TABLA A) Y luego hacer otro select con los datos que tiene la tabla con los nuevos registros (TABLA B) y al momento de hacer el insert, primero ir a preguntar al en los datos de la TABLA B si existe el registro o no:
Código PHP:
$arregloTablaA //Datos desde la tabla A
$arregloTablaB // Mas de 130.000 registros
foreach($arregloTablaA as $indice => $valor){
//Toda la lógica para abrir los registros que omitiré pues no aporta mucho
If(¡BuscarDatosEnArregloTablaB($arregloTablaB,$valor[‘dato’]){
//HagoInsert
}
}
function BuscarDatosEnArregloTablaB($arregloTablaB,$dato){
$boolExiste = false;
foreach($arregloTablaB as $indice => $valor){
if($dato == $valor['x']){
$boolExiste = true;
break;
}
}
if($boolExiste){
return true;
} else {
return false;
}
}
Agradecería me puedan ayudar a como optimizar este proceso.
De antemano gracias.