同意楼上,表1与表2 都对a建索引. not in 的查询过程是先查询(select 表2.a from 表2),把结果放到临时表上,再表1 的记录逐条查询临时表,得出是否NOT IN ,因临时表无索引,所以速度肯定很慢.
select 表1.a from 表1,表2 where 表1.a<>表2.a;这个语句生成的记录是笛卡儿集去掉相同的记录,如果你的记录别说在30多万, 就是两个超过10000的也让你的机器难以算出来,几乎是1亿条记录。在只比较一个字段时使用NOT IN 或 NOT EXISTS 意义一样。如果有索引,也不会有多大差异。当然用NOT EXISTS 性能相对要好一些
not in 的查询过程是先查询(select 表2.a from 表2),把结果放到临时表上,再表1 的记录逐条查询临时表,得出是否NOT IN ,因临时表无索引,所以速度肯定很慢.
from 表1,表2
where 表1.a<>表2.a;这个语句生成的记录是笛卡儿集去掉相同的记录,如果你的记录别说在30多万,
就是两个超过10000的也让你的机器难以算出来,几乎是1亿条记录。在只比较一个字段时使用NOT IN 或 NOT EXISTS 意义一样。如果有索引,也不会有多大差异。当然用NOT EXISTS 性能相对要好一些