select 表1.a
from 表1
where not exists(select 表2.a from 表2 where 表2.a = 表1.a);

解决方案 »

  1.   

    同意楼上,表1与表2 都对a建索引.
    not in 的查询过程是先查询(select 表2.a from 表2),把结果放到临时表上,再表1 的记录逐条查询临时表,得出是否NOT IN ,因临时表无索引,所以速度肯定很慢.
      

  2.   

    select 表1.a
    from 表1,表2
    where 表1.a<>表2.a;这个语句生成的记录是笛卡儿集去掉相同的记录,如果你的记录别说在30多万,
    就是两个超过10000的也让你的机器难以算出来,几乎是1亿条记录。在只比较一个字段时使用NOT IN 或 NOT EXISTS 意义一样。如果有索引,也不会有多大差异。当然用NOT EXISTS 性能相对要好一些