InnoDB proporciona una estructura de claves más compleja que MyIsam (FOREIGN KEYS
) y la regeneración de claves es muy lenta en InnoDB. Debe adjuntar todas las declaraciones de actualización/inserción en una transacción (esas son bastante rápidas en InnoDB, una vez que tuve alrededor de 300 000 consultas de inserción en la tabla de InnoDb con 2 índices y tomó alrededor de 30 minutos, una vez que encerré cada 10 000 inserciones en BEGIN TRANSACTION
y COMMIT
tomó menos de 2 minutos).
Recomiendo usar:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Esto hará que InnoDB actualice los índices solo una vez, no unos cientos de veces.
Avísame si funcionó