Saya telah mewarisi database dan saya ingin membersihkan dan mempercepatnya. Saya memiliki tabel yang berisi 30.000.000 baris, banyak di antaranya adalah data sampah yang disisipkan karena kesalahan atas nama programmer kami. Sebelum saya menambahkan indeks baru yang lebih dioptimalkan, saya mengonversi tabel dari MyISAM ke InnoDB dan saya ingin menghapus banyak baris yang berisi data sampah.
Basis datanya adalah MySQL 5.0 dan saya memiliki akses root ke server. Saya pertama kali menjalankan perintah ini melalui Adminer dan kemudian phpMyAdmin, keduanya dengan hasil yang sama.
Perintah yang saya jalankan adalah,
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
Pada dasarnya, hapus apa pun di kolom ini yang dimulai dengan tanda hubung -
.
Ini berjalan sekitar 3-5 menit dan kemudian ketika saya melihat daftar proses, itu hilang.
Saya kemudian lari,
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
dan mengembalikan jutaan baris.
Mengapa pernyataan penghapusan saya tidak lengkap?
NB, saya tahu betapa ketinggalannya MySQL 5.0. Saya sedang berusaha untuk memindahkan DB ke MySQL 5.6 w InnoDB (mungkin MariaDB 10 w XtraDB) tetapi sampai itu terjadi, saya ingin menjawab ini dengan DB apa adanya.
-
Edit dihapus, lihat jawaban saya.
WHERE
.