由于icme..活动表 中的数据量很大,上百万条数据,用这种方式删除数据的话  太慢了,  有哪位哥哥姐姐 帮忙写个简单的删除方法啊  !    谢谢!delete from  icme..活动表   where  人员编号 in (select 人员编号 from icme2..活动表) and 内容  in(select 内容 from icme2..活动表)
and 类别  in(select 类别 from icme2..活动表)and   学科  in (select 学科 from icme2..活动表)and  形式 in(select 形式 from icme2..活动表)
and 学分 in (select 学分  from icme2..活动表 ) and  学时 in (select 学时  from icme2..活动表 )and  日期  in(select 日期 from icme2..活动表)

解决方案 »

  1.   

    问一下,是否icme和icme2表结构相同,要做的事情是在icme..活动表中删除icme2..活动表中已经存在的记录?
      

  2.   

    icme1.0 活动表(人员编号,内容,类别,学科,形式,学分,学时,日期,备注,上传标志T,授分单位,更新时间,MoveMark(空),ID,icme2id,I1toi2)icme2.0 活动表(keyid,id,人员编号,内容,类别,学科,形式,学分,学时,日期,备注,录入方式0,授分单位,审核状态0,审核单位(空),审核日期,是否有效0,状态0,icmeid0,添加时间,修改时间,i2toi10,icme1id0,beiyiid0,beijingtobeiyi0)他们的主键都是  人员编号,内容,类别,学科,形式,学分,学时,日期
    帮帮忙啊  !  谢谢了!
      

  3.   

    icme1.0 活动表 里面有没有那种唯一可以标示一行记录的列?
      

  4.   

    TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
      

  5.   

    delete a from icme..活动表 a
    where exists
    (select 1 from icme2..活动表 b
    where a.人员编号=b.人员编号 and a.内容=b.内容 and a.类别=b.类别 and a.学科=b.学科 and a.形式=b.形式 and a.学分=b.学分 and a.学时=b.学时 and a.日期=b.日期)这个应该会快一些,减少了对icme2..活动表的搜索和比较次数
      

  6.   

    当联合主键超过3个时,应该另外单独加一列作为行标志。delete a 
    from icme..活动表 a join icme2..活动表 b
    on a.人员编号=b.人员编号 and a.内容=b.内容 and a.类别=b.类别 and a.学科=b.学科 and a.形式=b.形式 and a.学分=b.学分 and a.学时=b.学时 and a.日期=b.日期
      

  7.   

    delete icme..活动表
    from icme..活动表 as a join icme2..活动表 as b on
        a.人员编号=b.人员编号 and a.内容=b.内容 and a.类别=b.类别 and a.学科=b.学科 and 
        a.形式=b.形式 and a.学分=b.学分 and a.学时=b.学时 and a.日期=b.日期