批量删除100万数据,删除一万行数据提交一次。
 如有A、B表,A、B表数据id相同,根据id删除A表的数据.这个怎么修理?

解决方案 »

  1.   

     如有A、B表,A、B表数据id相同,根据id删除A表的数据.这个怎么修理?
    delete a from a inner join b on a.id=b.id
      

  2.   

    ---表的连接查询
    DELETE FROM a
    INNER JONN b
    ON a.id=b.id
      

  3.   

    想嵌入到存储过程,批量删除 一万行提交一次。数据量很大。。都有一百多万!
    是不是占用CPU、I、O很高 
      

  4.   

    大量数据会有这个问题,甚至会导致你的回滚段不足。
    一般是用游标处理。对B表打开游标,然后逐个删除A表中ID对应的记录。每删除一个提交一次。
      

  5.   

    DELIMITER $$DROP PROCEDURE IF EXISTS 'delrows'$$CREATE PROCEDURE delrows()
    BEGIN 
    DECLARE  rn int default 0;SELECT count(*) into rn FROM a u,b p WHERE p.userid=u.userid;WHILE (rn >=0) DODELETE FROM  a WHERE userid IN ( SELECT userid FROM B WHERE a.id=b.id limit 10000);
    SET rn=rn-10000;
    commit;END WHILE;END
    $$
    DELIMITER ;这样对不?
      

  6.   

    mysql> call delrows();
    ERROR 1305 (42000): PROCEDURE china.delrows does not exist
    mysql> call delrows(tmp_lastip25,tmp_lastip);
    ERROR 1305 (42000): PROCEDURE china.delrows does not exist
    在调用时报错