有两张表A,B,通过同一个字段no关联
其中A表包含B表,包含的意思是A的no字段包含B的no字段,如何通过no字段快速的删除A表中包含B表中的内容
我写的sql语句
delete A
where no in(select no from B);A表有300多万的数据,B表有100多万,我那个语句执行起来特慢,有没有更高效的方法。
谢谢各位大侠了

解决方案 »

  1.   

    SQL语句写的不正确!!!
    不要使用In操作,可以使用Exists操作符,这样写Delete A
         Where Exists( Select No From B
                              Where( B.No = A.No ) )同时保证对No列建立了索引!!!
      

  2.   

    我那个语句语法是没问题的啊,只是效率有点低,我知道in的效率比较低
    我想问问我经常进行这种操作,有没有效率更高一些的,因为我的大部分时间
    都浪费在delete上了,这让我很恼火,动不动就是几个小时。楼上的写的那个效率
    高么,我试试,谢谢了
      

  3.   

    总结之:对于你这个情况,很可能用exists比用效率高in,但别不一定所有情况都是.
      

  4.   

    如果不需要日志,可以用truncate table,这个肯定快,ddl命令,呵呵