Eu herdei um banco de dados e estou procurando limpá-lo e acelerá-lo. Eu tenho uma tabela que contém 30.000.000 linhas, muitas das quais são dados indesejados inseridos devido a um erro em nome do nosso programador. Antes de adicionar índices novos e mais otimizados, converti a tabela do MyISAM para o InnoDB e pretendo excluir muitas das linhas que contêm dados indesejados.
O banco de dados é MySQL 5.0 e eu tenho acesso root ao servidor. Eu estava executando esses comandos primeiro pelo Adminer e depois pelo phpMyAdmin, ambos com os mesmos resultados.
O comando que estou executando é,
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
Essencialmente, exclua tudo nesta coluna que comece com um traço -
.
Ele dura cerca de 3-5 minutos e, quando vejo a lista de processos, desaparece.
Então eu corro,
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
e retorna milhões de linhas.
Por que minha declaração de exclusão não está sendo concluída?
PS, estou ciente de como o MySQL 5.0 está desatualizado. Estou trabalhando para mover o banco de dados para o MySQL 5.6 w InnoDB (talvez MariaDB 10 w XtraDB), mas até que isso aconteça, estou procurando responder isso com o banco de dados como está.
-
Editar removido, veja minha resposta.
WHERE
.