【发布时间】:2019-07-12 04:29:59
【问题描述】:
我的数据库空间不足,所以我对旧记录进行了备份。现在我要清除这些记录,我的参考列是'日期'。
我尝试使用标准方法:
DELETE FROM table WHERE date >= '2017-01-01' AND date <= '2017-12-31'
但这显然花费了太多时间,因为要删除的行数超过 700 万行。有没有办法加快这个速度?我试图分成几个月甚至更小的块,但在运行代码一段时间后,我与服务器断开连接。
提前致谢。
编辑:
CREATE TABLE table (
id INT(11) NOT NULL AUTO_INCREMENT,
date DATE DEFAULT NULL,
# 18 more columns
PRIMARY KEY (id)
)
ENGINE = INNODB,
AUTO_INCREMENT = 29616055,
AVG_ROW_LENGTH = 317,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_general_ci;
【问题讨论】:
-
您尝试过什么调试问题?有没有设置索引?
-
表的引擎是 InnoDB 还是 MyISAM? (或者要回答我和 Nico 的问题,请将表格的 CREATE 语句添加到您的问题中)。
-
可能是您的日期字段未编入索引。
-
请
MySql或Sql标记 -
ALTER TABLE `table` ADD INDEX date_index (`date`);你的专栏date是什么类型的?