mysq如何快速l删除大量数据的问题

zhxznu 2008-01-24 09:44:25
请教下:

现在公司用的mysql数据库,里面有个记录表,大概有几千万条记录,保留了04年以来的消费记录。

现在决定只保留08年以来的,现在需要删除08年以前的消费记录,大概也是几千万条。

该表的每条记录都是有提交时间字段,datetime格式。

假设表名为a,时间字段为time

我现在想用

delete from a where time < "2008-01-01 00:00:00";

担心几千万条的记录要删除很久,不知道有没有其他好的方法。
...全文
504 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxznu 2008-02-01
  • 打赏
  • 举报
回复
补充下,这个是13个月的数,我是分了几次删除的
zhxznu 2008-02-01
  • 打赏
  • 举报
回复
5482310 rows affected (21 min 27.14 sec)

给大家一个参考数据,呵呵
zhxznu 2008-02-01
  • 打赏
  • 举报
回复
+----------+-------+---------------+---------+---------+------+---------+-------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+----------+-------+---------------+---------+---------+------+---------+-------------+
| Credited | range | PRIMARY | PRIMARY | 8 | NULL | 7959324 | Using where |
+----------+-------+---------------+---------+---------+------+---------+-------------+
我用EXPLAIN显示的结果,看来是已经比较优化了。由于我只是删除该表里的部分数据,所以TRUNCATE TABLE tbl_name 不能使用,那会导致现有数据丢失。另外关于先备份数据,然后删除该表,然后导入新的数据的思路
也存在一点遗憾,因为这个是生成数据库,每时都需要插入新的数据,而这个方法需要暂停下数据库,比较麻烦。

最后决定Delete吧,谢谢各位了。
microphonecarl 2008-01-30
  • 打赏
  • 举报
回复
问题解决了吗>
SEEE2008 2008-01-30
  • 打赏
  • 举报
回复
如果想要删除一个表的所有行,使用TRUNCATE TABLE tbl_name 而不要用DELETE FROM tbl_name
懒得去死 2008-01-30
  • 打赏
  • 举报
回复
truncate table 几乎是瞬间的。
yifuzhiming 2008-01-30
  • 打赏
  • 举报
回复
数据越大,删除时间就越长啊
RoameBaby 2008-01-29
  • 打赏
  • 举报
回复
将08年之后的数据导出,然后清空表,再将之前导出的数据导入。

如果要求数据库不能离线的话,就花些时间delete吧
懒得去死 2008-01-24
  • 打赏
  • 举报
回复
贴出你的EXPLAIN结果
懒得去死 2008-01-24
  • 打赏
  • 举报
回复
explain select * from a where time < "2008-01-01 00:00:00";
结果
XFliangwh 2008-01-24
  • 打赏
  • 举报
回复
或者你select一下你delete的条件,看看时间可不可以接受。
XFliangwh 2008-01-24
  • 打赏
  • 举报
回复
你都没删过,怎么知道很慢呢,如果担心,就一部分一部分的删,或者把08年的备份出来,把整个表删了,再把08的放回区去。
zhxznu 2008-01-24
  • 打赏
  • 举报
回复
谢谢你的回复,
我忘记说明,time字段已经是主键了。

这样是不是就可以了?没有其他更简单的方法了吧
懒得去死 2008-01-24
  • 打赏
  • 举报
回复
给TIME字段加一个索引就可以了

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧