Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kasus mysql dalam pernyataan pembaruan dengan REPLACE

Karena Anda menggunakan LIKE '%abc%' , pernyataan pembaruan akan memerlukan pemindaian tabel lengkap. Dalam hal ini, menggabungkan dua pernyataan akan meningkatkan kinerja secara keseluruhan. Namun, menurut saran Anda, setiap baris diperbarui dan sebagian besar diperbarui tanpa diubah (nilai kolom1 diganti dengan nilai kolom1).

Anda ingin memastikan bahwa Anda menyimpan WHERE klausa sehingga hanya baris yang benar-benar perlu diubah yang diubah. Menulis ke disk yang tidak perlu ini lebih lambat daripada memeriksa apakah baris cocok dengan kriteria.

Lakukan ini:

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. Terlalu banyak tabel; MySQL hanya dapat menggunakan 61 tabel dalam satu gabungan

  2. MySQL Recursive dapatkan semua anak dari orang tua

  3. Bagaimana cara menyisipkan baris kosong, tetapi memiliki pembaruan nomor otomatis dengan benar?

  4. Wildfly 8.0.0 masalah mysql dengan sumber data

  5. Mungkinkah kueri PHP MYSQL mengabaikan variabel kosong dalam klausa WHERE?