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

membersihkan db dari data yang berlebihan

Tambahkan indeks unik pada lokasi tabel sehingga tidak ada catatan duplikat yang akan dimasukkan

ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);

Ini akan secara otomatis menghapus rekaman duplikat dari tabel dan untuk kueri penyisipan di masa mendatang, Anda perlu menggunakan INSERT IGNORE klausa untuk menghindari kesalahan duplikat.

tetapi seperti yang disarankan oleh @AD7six dalam komentar, ini mungkin tidak berfungsi pada versi MySQL 5.1.41,5.5.1-m2, 6.0 :lihat bug di sini

atau cara aman alternatif untuk menghapus duplikat menggunakan DELETE permintaan:

DELETE a
FROM location a
     LEFT JOIN (
                SELECT locid
                FROM location
                GROUP BY country, city
               )b
               ON a.locid = b.locid
WHERE b.locid IS NULL;

untuk mengatur ulang nilai auto_increment kolom locid , Anda cukup melepaskan primary key di locid dan buat ulang:

ALTER TABLE location DROP column locid;
ALTER TABLE location 
      ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

atau cara alternatif untuk mengatur ulang nilai locid menggunakan UPDATE permintaan:

SET var_locid = 0;

UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengatur string koneksi untuk database MySQL dalam proyek C# tanpa menggunakan kotak dialog?

  2. Tampilkan nilai kolom tunggal dari kueri mysqli

  3. Dalam keadaan apa Anda ingin Rails disetel untuk TIDAK terhubung kembali ke MYSQL?

  4. Memotong semua tabel dalam database MySQL dalam satu perintah?

  5. MySQL menyimpan waktu durasi - tipe data?