尽管有8GB的RAM,当我运行这个MYSQL查询时,由于内存运行,我收到错误。原因是我有大量的数据:
`DELETE FROM bigtable_main where date = '2009-12-31';
有没有办法将上面的查询拆开,以便我可以在一个查询中执行1到999,999行,在另一个查询中执行1,000,000到1,999,999行等?
答案 0 :(得分:3)
您可以使用limit
关键字:
DELETE FROM bigtable_main where date = '2009-12-31' LIMIT 1000000;
您只需反复运行此查询,直到没有要删除的行为止。
删除行比你想象的要复杂得多,因为MySQL的事务语义会使回滚删除成为可能。如果以较小的块(例如LIMIT 1000000
或甚至LIMIT 1000
)进行删除,则需要从MySQL服务器执行较少的回滚工作。