我需要一个MySQL Skript,它执行以下操作:
删除数据库的区块,直到删除了所有大于10000的link_id
示例:
x = 10000
DELETE FROM pligg_links WHERE link_id > x and link_id < x+10000
x = x + 10000
...所以它会删除
DELETE FROM pligg_links WHERE link_id > 10000 and link_id < 20000然后
DELETE FROM pligg_links WHERE link_id > 20000 and link_id < 30000直到所有id小于10000的id都被删除
我需要这个,因为数据库非常非常大(不仅仅是一场演唱会)
提前感谢
发布于 2012-06-19 17:19:03
以下内容中存在什么问题:
DELETE FROM pligg_links WHERE link_id > 10000还有另一种方法:(只需按顺序执行这3个查询)
Step1 : Insert into pligg_links_temp select * from pligg_links where link_id < 10000;
Step2 : Drop pligg_links;
Step3 : Insert into pligg_links select * from pligg_links_temp发布于 2012-06-19 17:22:46
您可以使用LIMIT语句来控制一步中要删除的项目数:
DELETE FROM pligg_links
WHERE link_id > 10000
LIMIT 1000;http://dev.mysql.com/doc/refman/5.1/en/delete.html说:
删除特定于MySQL的LIMIT row_count选项
告诉服务器在将控制权返回给客户端之前要删除的最大行数。这可用于确保给定的DELETE语句不会占用太多时间。您可以简单地重复DELETE语句,直到受影响的行数小于限制值。
如果您希望自动删除,可以使用SELECT ROW_COUNT();确定删除的行数:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count
https://stackoverflow.com/questions/11097925
复制相似问题