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

optimasi kueri dengan pernyataan kasus

case pernyataan memang menambah waktu, karena dicari.

Solusinya? Simpan pasangan dalam tabel sementara. . . dengan indeks. Jadi:

create temporary table code_pairs (
    old_code varchar(255) not null primary key,
    new_code varchar(255)
);

insert into code_pairs(old_code, new_code)
    values ('akdsfj', 'kadjsf'),
           ('asdf', 'ndgs'),
           . . . ;

Kemudian gunakan update dengan join :

update test_table tt join
       code_paris cp
       on tt.code = cp.old_code
    set tt.code = cp.new_code;

Ini menghemat waktu Anda karena kode yang cocok ditemukan menggunakan indeks, daripada mencari satu per satu melalui case penyataan. Selain itu, tidak ada pembaruan yang dicoba pada baris yang tidak cocok. 170.000 baris tanpa kecocokan mungkin merupakan bagian paling lambat dari kueri, karena harus melalui seluruh daftar case nilai.




  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 bagaimana cara mengisi tanggal yang hilang dalam rentang?

  2. Bagaimana cara melakukan Pemodelan Warisan dalam Basis Data Relasional?

  3. Pilih baris antara baris tertentu ke beberapa baris dengan kondisi tertentu

  4. Permintaan lambat:temukan perbedaan antara nilai berdasarkan min dan maks pada kolom lain untuk setiap grup

  5. PyMySQL tidak dapat terhubung ke MySQL di localhost