小编baf*_*mca的帖子

DELETE 命令未在 30,000,000 行表上完成

我继承了一个数据库,并希望对其进行清理和加速。我有一个包含 30,000,000 行的表,其中许多是由于我们程序员的错误而插入的垃圾数据。在添加任何新的、更优化的索引之前,我将表从 MyISAM 转换为 InnoDB,并希望删除大量包含垃圾数据的行。

数据库是 MySQL 5.0,我有服务器的 root 访问权限。我首先通过 Adminer 运行这些命令,然后通过 phpMyAdmin 运行,结果相同。

我正在运行的命令是,

DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
Run Code Online (Sandbox Code Playgroud)

本质上,删除此列中以 dash 开头的任何内容-

它运行了大约 3-5 分钟,然后当我查看进程列表时,它消失了。

然后我跑,

SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
Run Code Online (Sandbox Code Playgroud)

它返回数百万行。

为什么我的删除语句没有完成?

PS,我知道 MySQL 5.0 已经过时了。我正在将数据库移动到 MySQL 5.6 w InnoDB(可能是 MariaDB 10 w XtraDB),但在此之前,我希望按原样使用 DB 来回答这个问题。

——

编辑已删除,请参阅我的答案。

mysql innodb myisam delete mysql-5.0

22
推荐指数
4
解决办法
4万
查看次数

标签 统计

delete ×1

innodb ×1

myisam ×1

mysql ×1

mysql-5.0 ×1