InnoDB fornisce una struttura delle chiavi più complessa rispetto a MyIsam (FOREIGN KEYS
) e la rigenerazione delle chiavi è molto lenta in InnoDB. Dovresti racchiudere tutte le istruzioni di aggiornamento/inserimento in una transazione (quelle in realtà sono abbastanza veloci in InnoDB, una volta che ho avuto circa 300 000 query di inserimento sulla tabella InnoDb con 2 indici e ci sono voluti circa 30 minuti, una volta racchiuso ogni 10 000 inserimenti in BEGIN TRANSACTION
e COMMIT
ci sono voluti meno di 2 minuti).
Consiglio di utilizzare:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Ciò farà sì che InnoDB aggiorni gli indici solo una volta, non poche centinaia di volte.
Fammi sapere se ha funzionato