Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je optimiser la requête MySQL pour la mise à jour ?

Si vous n'avez pas déjà un index sur number vous devriez en ajouter un -

CREATE INDEX table_number ON table (number);

MISE À JOUR Essayez ceci -

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

Vous pouvez créer votre table avec uniquement les doublons en sélectionnant ces données directement dans une autre table au lieu de faire d'abord cette mise à jour de l'indicateur.

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

Si vous pouvez expliquer la logique pour laquelle les lignes sont supprimées de inv tableau, il se peut que l'ensemble du processus puisse être effectué en une seule étape.