A数据表有几万条记录。。里面有一字段titleB数据表也有几万条记录,里面有一字段title1,问题是
A表字段title的每个值都要去判断是否在B表title1中存在了。。如果存在,没事,不存在就把A中的这条记录删除。B表是不变的。我感觉如果遍历A数据表的title字段,每个值再去B中查找是否存在,似乎效率不咋的啊。。
有何良策??

解决方案 »

  1.   

    delete from a where a.title no in select title from B
      

  2.   

    多表语法:DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*] ...]
        FROM table_references
        [WHERE where_definition]
    或:DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*] ...]
        USING table_references
        [WHERE where_definition]
      

  3.   

    delete A.* from A left join B on  B.title1 = A.title where B.title1 is NULL;
    --------------------------------------------
    在B表title1上索引的情况下,A因为left join所以是全表扫描.B是索引扫描.
    最好还是逻辑上处理下吧,为啥B和A关联,B的被删除掉了,A的还保留。这种Not in的逻辑很难有效使用索引的。
      

  4.   

    三楼正解
    用php脚本来做也是不错的。