本帖最后由 hu83369766 于 2014-08-26 10:39:31 编辑

解决方案 »

  1.   

    可以用  delete from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) limit 100000;用limit限制一下,每次只需删除10W条。伪代码如下:int num=select count(1) from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) ;
    while (num>0)
    do 
        delete from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) limit 100000;
        num=select count(1) from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) ;
    done;
      

  2.   

    delete from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) limit 10000
      

  3.   

    谢谢 但具体该怎么定义num这个变量呢? 循环的具体格式该咋写呢? 小弟对数据库完全不懂啊 网上查了查 也查不到多少有用的信息
      

  4.   

    谢谢 但具体该怎么定义num这个变量呢? 循环的具体格式该咋写呢? 小弟对数据库完全不懂啊 网上查了查 也查不到多少有用的信息这个不需要写数据库啊,我这是伪代码,出了sql语句之外,这个num可以在java里面写啊,比如int num=0;
    num=这里写java代码调用select count(1) from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) ;语句给java变量num赋值,然后while或者for,写java循环啊
    比如
    while (num>0) 
    do #这里表示只要存在数据就通过java代码执行sql语句进行删除操作。
            比如这里就是用java代码调用这个sql语句delete from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) limit 100000; 来删除数据。
         下面在给java变量num重新赋值下,看看批量删除10W后还有没有需要删除的记录。
        num=select count(1) from loginfo where log_time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) ;
    done;这个简单吧,你就是需要写java代码来调用sql语句做你想做的事情而已。当然你不写java写.net或者其它的php等代码都是一个功效。