Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich die MySQL-Abfrage für die Aktualisierung optimieren?

Wenn Sie noch keinen Index für number haben Sie sollten ein -

hinzufügen
CREATE INDEX table_number ON table (number);

AKTUALISIEREN Versuchen Sie dies -

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

Sie können Ihre Tabelle nur mit den Duplikaten erstellen, indem Sie diese Daten direkt in einer anderen Tabelle auswählen, anstatt diese Markierungsaktualisierung zuerst durchzuführen.

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

Wenn Sie die Logik erklären können, nach der Zeilen aus inv gelöscht werden Tabelle kann es sein, dass der gesamte Prozess in einem Schritt erledigt werden kann.