Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso otimizar a consulta do MySQL para atualização?


Se você ainda não tem um índice em number você deve adicionar um -
CREATE INDEX table_number ON table (number);

ATUALIZAÇÃO Tente isso -
UPDATE inv t1
INNER JOIN inv t2
    ON t1.name = t2.name
    AND t1.id <> t2.id
SET t1.flag_qty = 1;

Você pode criar sua tabela apenas com as duplicatas selecionando esses dados diretamente em outra tabela, em vez de fazer essa atualização de sinalizador primeiro.
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 você puder explicar a lógica para quais linhas são excluídas de inv tabela pode ser que todo o processo possa ser feito em uma única etapa.