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

caso mysql na instrução de atualização com REPLACE


Como você está usando LIKE '%abc%' , a instrução de atualização exigirá uma verificação completa da tabela. Nesse caso, combinar as duas instruções melhorará o desempenho geral. No entanto, em sua sugestão, todas as linhas são atualizadas e a maioria delas é atualizada sem ser alterada (o valor da coluna1 é substituído pelo valor da coluna1).

Você quer ter certeza de manter o WHERE cláusula para que apenas as linhas que realmente precisam ser alteradas sejam alteradas. Essa gravação desnecessária no disco é mais lenta do que verificar se a linha corresponde aos critérios.

Fazem isto:
UPDATE table1
SET column1 = 
CASE
WHEN column1 LIKE '%abc%' THEN REPLACE(column1, 'abc', 'abc1')
WHEN column1 LIKE '%def%' THEN REPLACE(column1, 'def', 'def1')
END
WHERE column1 LIKE '%abc%' OR column1 LIKE '%def%';