Tengo un cliente que tiene un sistema php al que le he hecho modificaciones, y en su BD de MySQL tiene dos tablas : Una temporal donde suben registros de un archivo de excel y otra tabla principal.
La tabla principal tiene aprox 150,000 regs. y la temporal llega a a tener aprox unos 12,000 regs.
Hay un script en PHP, donde ejecutan un proceso de actualización:
- Desde el cliente hacen el submit a un script php
- Se toma cada registro de la temporal y busca si ya existe en la principal
- Si ya existe actualiza ciertos campos
- Si no existe el registro entonces lo inserta como nuevo
- Después borra el reg de la temporal
Como pueden ver me refiero a que si la temporal tiene 12 Mil registros, cada uno lo busca en los 150 mil de la principal, y ejecuta un update o un insert y después un delete.
No se si mis cuentas estén bien pero estoy diciendo que desde el navegador con el srcipt php hace aprox 3 querys (select,update/insert y delete) x 12,000 regs, algo asi como unos 36,000 querys desde el script php.
Cuando se ejecuta el script de actualizacion el sistema php se atura y los demás usuarios del sistema no pueden trabajar durante unos 45 min... durante este tiempo ni siquiera se esta actualizando nada en la bd. Pasado este tiempo el sistema de destraba y se puede volver a trabajar y hasta entonces es cuando en realidad la BD se esta actualizando (refrescando con phpmyadmin veo como va disminuyendo la tabla temporal)
Supongo que esta no ha de ser la manera ideal de actualizar entre dos tablas, me refiero a que es mucha carga para el cliente ejecutar este proceso.
En su experiencia que es lo que me recomendarían para hacer este proceso?