Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql случай в изявление за актуализиране с REPLACE

Тъй като използвате LIKE '%abc%' , изявлението за актуализиране ще изисква пълно сканиране на таблицата. В този случай комбинирането на двете твърдения ще подобри цялостното представяне. Във вашето предложение обаче всеки отделен ред се актуализира и повечето от тях се актуализират, без да се променят (стойността на колона 1 се заменя със стойност на колона 1).

Искате да сте сигурни, че запазвате WHERE клауза, така че да се променят само редове, които наистина се нуждаят от промяна. Това ненужно записване на диск е по-бавно от проверката дали редът отговаря на критериите.

Направете това:

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. mySQL избира пощенски кодове в рамките на x км/мили в обхвата на y

  2. SQL обединява дублиращи се редове и обединява стойности, които са различни

  3. Проследяване:как да моделирам отстъпка за артикули в база данни?

  4. mysql_insert_id с актуализация

  5. Какво е новото в ProxySQL 2.0