sql >> Database >  >> RDS >> Mysql

InnoDB voegt erg langzaam en langzamer in

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



  1. join op de kolom van twee verschillende tabellen sqlite3

  2. Meerdere Mysql-instructies groeperen om het aantal meerdere statussen op te halen

  3. WHERE-clausules dynamisch / programmatisch aan SQL toevoegen

  4. Is er een manier om een ​​db-relatie (pk/fk) te behouden in het volgende scenario?