delete from rt where id in (select id from a) 
这里rt  a  2表都是300万的大表  , id各自都有索引 
速度太慢20分钟 检查os(linux)负载太大 ,而且从工具看 那个表好像咩有减少数据。
如何解决删除2个大表的记录删除过程

解决方案 »

  1.   

    分段删除吧。一次删除一部分delete from rt where id in (select id from a where id <100)
      

  2.   

    我停止进程 之后检查发现数据少了一半 
    也就是说他还是再做点 
    所以方法是没有问it的 换用inner 链接2个表发现还不如上面的sql
      

  3.   

    in  和 inner 应该差不多。
      

  4.   

    1.create table rttemp select * from rt where id not in (select id from a);
    2.truncate table rt;
    3.insert into rt select * from rttemp;
    4.3或者可以改为:reanme table rttemp rt;
      

  5.   

    在ID上建立索引没有 
    delete a from rt a1 inner join a on a1.id=a.id
    如果删除r的记录过多,将不删除r的记录生成一个新表。