Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso ottimizzare la query MySQL per l'aggiornamento?

Se non hai già un indice su number dovresti aggiungerne uno -

CREATE INDEX table_number ON table (number);

AGGIORNAMENTO Prova questo -

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

Puoi creare la tua tabella solo con i duplicati selezionando questi dati direttamente in un'altra tabella invece di eseguire prima questo aggiornamento del flag.

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

Se puoi spiegare la logica per cui le righe vengono eliminate da inv tabella può essere che l'intero processo possa essere eseguito in un solo passaggio.