select a.* from a
where not exists(select * from b where a.zd1=b.zd1)

解决方案 »

  1.   

    另外,最好对a.zd1和b.zd1创建索引
      

  2.   

    将两个表zd1不等的记录全部筛选出来??? 
    那是最多可能有:6000*50000=300,000,000笔资料啊。
    楼主可能不是这个意思吧。
    是不是:
    select * from a
    where zd1 not in(select zd1 from b)
      

  3.   

    查询分析器很快的。
    调试如果感觉很慢时,十有八九是你的SQL有问题
      

  4.   

    是这样的,表a有6000条记录,表b有50000条记录,两个表都有字段zd1,第一次执行下面sql:select b.* from a,b where a.zd1=b.zd1,得出结果为6000条,那么应该认为select b.* from a,b where a.zd1<>b.zd1的结果应该为50000-6000=44000条,但执行这条语句则出现上面这种情况。
    我也试过select * from b
    where zd1 not in(select zd1 from a),但结果为45000条,多了1000条?
      

  5.   

    楼主的做法恐怕作了迪卡尔积了吧,所以才很慢的吧。如果表中有zdl的重复记录,差了1000条也不足为奇了
      

  6.   

    用索引要快一些,不过这么多记录(6000*50000=300000000)还用select会不会太慢啦,效率也不高,用别的方法吧
    可以去数据仓库看看~~~~~~