InnoDB giver mere kompleks nøglestruktur end MyIsam (FOREIGN KEYS
) og regenerering af nøgler er virkelig langsom i InnoDB. Du bør vedlægge alle opdaterings-/indsæt-udsagn i én transaktion (de er faktisk ret hurtige i InnoDB, engang havde jeg ca. 300.000 insert-forespørgsler på InnoDb-tabellen med 2 indekser, og det tog omkring 30 minutter, når jeg først lukkede hver 10.000 inserts i BEGIN TRANSACTION
og COMMIT
det tog mindre end 2 minutter).
Jeg anbefaler at bruge:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Dette vil få InnoDB til at opdatere indekser bare én gang ikke få hundrede gange.
Lad mig vide, om det virkede