Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql case w instrukcji aktualizacji z REPLACE

Ponieważ używasz LIKE '%abc%' , instrukcja aktualizacji będzie wymagać pełnego skanowania tabeli. W takim przypadku połączenie tych dwóch stwierdzeń poprawi ogólną wydajność. Jednak zgodnie z twoją sugestią każdy wiersz jest aktualizowany, a większość z nich jest aktualizowana bez zmian (wartość kolumny 1 jest zastępowana wartością kolumny 1).

Chcesz mieć pewność, że zachowałeś WHERE klauzula, aby zmienić tylko te wiersze, które naprawdę wymagają zmiany. Ten niepotrzebny zapis na dysku jest wolniejszy niż sprawdzanie, czy wiersz spełnia kryteria.

Zrób to:

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%';



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiedy powinienem używać transakcji MySQL?

  2. Kiedy sygnatura czasowa (automatycznie) jest aktualizowana?

  3. Kardynalność indeksu MySQL — wydajność vs wydajność pamięci masowej

  4. Korzystanie z relacyjnych baz danych MySQL w Gentoo

  5. jak wstawić wiele wartości w jednym polu w mysql