sql >> Database >  >> RDS >> Mysql

Hoe kan ik de MySQL-query voor update optimaliseren?

Als u nog geen index heeft op number je zou er een moeten toevoegen -

CREATE INDEX table_number ON table (number);

UPDATE Probeer dit -

UPDATE inv t1
INNER JOIN inv t2
    ON t1.name = t2.name
    AND t1.id <> t2.id
SET t1.flag_qty = 1;

U kunt uw tabel maken met alleen de duplicaten door deze gegevens rechtstreeks in een andere tabel te selecteren in plaats van eerst deze vlagupdate uit te voeren.

INSERT INTO duplicate_invs
SELECT DISTINCT inv1.*
FROM inv AS inv1
INNER JOIN inv AS inv2
    ON inv1.name = inv2.name
    AND inv1.id < inv2.id

Als je de logica kunt uitleggen waarvoor rijen worden verwijderd uit inv tabel kan het zijn dat het hele proces in één stap kan worden gedaan.



  1. TempDB optimaliseren:knelpunten en prestatieproblemen vermijden

  2. SQLite-queryresultaten opmaken als een HTML-tabel

  3. Is het mogelijk om de ongeldige waarde in MySQL te vangen wanneer ik een externe sleutelbeperkingsfout krijg?

  4. MySQL dynamische-pivot