MYSQL查询太大了

时间:2014-09-06 14:50:11

标签: mysql

尽管有8GB的RAM,当我运行这个MYSQL查询时,由于内存运行,我收到错误。原因是我有大量的数据:

`DELETE FROM bigtable_main where date = '2009-12-31';

有没有办法将上面的查询拆开,以便我可以在一个查询中执行1到999,999行,在另一个查询中执行1,000,000到1,999,999行等?

1 个答案:

答案 0 :(得分:3)

您可以使用limit关键字:

DELETE FROM bigtable_main where date = '2009-12-31' LIMIT 1000000;

您只需反复运行此查询,直到没有要删除的行为止。

删除行比你想象的要复杂得多,因为MySQL的事务语义会使回滚删除成为可能。如果以较小的块(例如LIMIT 1000000或甚至LIMIT 1000)进行删除,则需要从MySQL服务器执行较少的回滚工作。