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.