Ho ereditato un database e sto cercando di pulirlo e accelerarlo. Ho una tabella che contiene 30.000.000 di righe, molte delle quali sono dati spazzatura inseriti a causa di un errore per conto del nostro programmatore. Prima di aggiungere nuovi indici più ottimizzati, ho convertito la tabella da MyISAM a InnoDB e sto cercando di eliminare molte delle righe che contengono dati spazzatura.
Il database è MySQL 5.0 e ho accesso root al server. Prima eseguivo questi comandi tramite Adminer e poi phpMyAdmin, entrambi con gli stessi risultati.
Il comando che sto eseguendo è,
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
In sostanza, elimina tutto in questa colonna che inizia con un trattino -
.
Funziona per circa 3-5 minuti e poi quando visualizzo l'elenco dei processi, non c'è più.
Poi corro,
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
e restituisce milioni di righe.
Perché la mia dichiarazione di eliminazione non viene completata?
PS, sono consapevole di quanto sia obsoleto MySQL 5.0. Sto lavorando per spostare il DB su MySQL 5.6 w InnoDB (forse MariaDB 10 w XtraDB) ma fino a quando ciò accade, sto cercando di rispondere a questo con il DB così com'è.
-
Modifica rimossa, vedi la mia risposta.
WHERE
.