我继承了一个数据库,并希望清理并加快它的速度。我有一个表,其中包含30,000,000行,由于代表程序员的错误,其中许多行都是垃圾数据。在添加任何新的,更优化的索引之前,我已将表从MyISAM转换为InnoDB,并希望删除很多包含垃圾数据的行。
数据库是MySQL 5.0,我具有对该服务器的root访问权限。我首先通过Adminer运行这些命令,然后通过phpMyAdmin运行,结果均相同。
我正在运行的命令是,
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
本质上,删除此列中以破折号开头的所有内容-
。
它运行大约3-5分钟,然后当我查看进程列表时,它就消失了。
然后我跑
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
它返回数百万行。
为什么我的删除语句没有完成?
PS,我知道MySQL 5.0是过时的。我正在努力将数据库移至MySQL 5.6 w InnoDB(也许是MariaDB 10 w XtraDB),但是直到发生这种情况之前,我一直希望使用DB来解决此问题。
-
编辑已删除,请参阅我的答案。
WHERE
。