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

MySQL menghapus duplikat dari database besar dengan cepat

Saya yakin ini akan berhasil, menggunakan kunci duplikat + ifnull():

create table tmp like yourtable;

alter table tmp add unique (text1, text2);

insert into tmp select * from yourtable 
    on duplicate key update text3=ifnull(text3, values(text3));

rename table yourtable to deleteme, tmp to yourtable;

drop table deleteme;

Harus jauh lebih cepat daripada apa pun yang membutuhkan grup oleh atau berbeda atau subquery, atau bahkan dipesan oleh. Ini bahkan tidak memerlukan filesort, yang akan mematikan kinerja pada tabel sementara yang besar. Masih memerlukan pemindaian penuh atas tabel asli, tetapi tidak ada cara untuk menghindarinya.



  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 menghapus karakter non-numerik untuk dibandingkan

  2. Koneksi MySQL tidak berfungsi:2002 Tidak ada file atau direktori seperti itu

  3. JSON_MERGE_PATCH() vs JSON_MERGE_PRESERVE() di MySQL:Apa Bedanya?

  4. Cara Mengatur Ulang Kata Sandi Root MySQL

  5. Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya (PHP / WAMP)