Hola compañeros pues voy a dar por solucionado el tema no sin antes dar gracias a gnzsoloyo y Libras por los consejos, pues hice algunas cuestiones como depurar la BD, agregar indices y finalmente mi sp quedo:
Código:
USE db;
DROP PROCEDURE IF EXISTS actualizacion;
DELIMITER //
CREATE PROCEDURE actualizacion()
BEGIN
/* Actualziacion entre las tablas */
UPDATE db.tabla1 t1 INNER JOIN db.tabla2 t2 ON t1.cuenta1=t2.cuenta SET t1.saldo = t2.saldo;
/* Eliminamos de la tabla temporal los registros que ya se actualizaron*/
DELETE t2 FROM db.tabla2 t2 INNER JOIN db.tabla1 t1 ON t1.cuenta=t2.cuenta;
/* En este punto en la TEMP solo quedaron los registros que no se encontraron en la tabla principal*/
INSERT INTO db.tabla1(cuenta,saldo) SELECT cuenta,saldo FROM db.tabla2;
/* Eliminamos el resto de la tabla */
DELETE t2 FROM db.tabla2 t2 INNER JOIN db.tabla1 t1 ON t1.cuenta=t2.cuenta;
END //
CALL actualizacion();
Aun así al ser muchos registros en ambas tablas tarda pero bueno al menos se que ya no estoy haciendo una mala praxis al hacerlo desde el cliente :)