O InnoDB fornece uma estrutura de chaves mais complexa que o MyIsam (
FOREIGN KEYS
) e a geração de chaves é muito lenta no InnoDB. Você deve incluir todas as instruções de atualização/inserção em uma transação (essas são realmente muito rápidas no InnoDB, uma vez que eu tinha cerca de 300.000 consultas de inserção na tabela InnoDb com 2 índices e levou cerca de 30 minutos, uma vez que incluí cada 10.000 inserções em BEGIN TRANSACTION
e COMMIT
levou menos de 2 minutos). Eu recomendo usar:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Isso fará com que o InnoDB atualize os índices apenas uma vez e não algumas centenas de vezes.
Deixe-me saber se funcionou