InnoDB biedt een complexere sleutelstructuur dan MyIsam (FOREIGN KEYS
) en het regenereren van sleutels is erg traag in InnoDB. Je moet alle update/insert-statements in één transactie insluiten (die zijn eigenlijk vrij snel in InnoDB, toen ik ongeveer 300.000 insert-query's had op de InnoDb-tabel met 2 indexen en het ongeveer 30 minuten duurde, nadat ik elke 10.000 inserts in BEGIN TRANSACTION
en COMMIT
het duurde minder dan 2 minuten).
Ik raad aan om:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Dit zorgt ervoor dat InnoDB indexen slechts één keer ververst, niet een paar honderd keer.
Laat me weten of het gelukt is