InnoDB zapewnia bardziej złożoną strukturę kluczy niż MyIsam (FOREIGN KEYS
), a regenerowanie kluczy w InnoDB jest bardzo powolne. Wszystkie instrukcje update/insert należy zawrzeć w jedną transakcję (w InnoDB są one właściwie dość szybkie, raz miałem około 300 000 zapytań insertowych na tabeli InnoDb z 2 indeksami i zajęło to około 30 minut, raz załączałem co 10 000 insertów do BEGIN TRANSACTION
i COMMIT
zajęło to mniej niż 2 minuty).
Polecam użyć:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Spowoduje to, że InnoDB odświeży indeksy tylko raz, a nie kilkaset razy.
Daj mi znać, czy zadziałało