CUS_ID,ACC_NBR...
-------------------
2001,1351234567
2002,1381234567
2003,1361234567
2004,1371234567
表B:有一个字段(10W行)
ACC_NBR
-------
1351234567
1361234567
1371234567
------------------需要得到的结果
CUS_ID,ACC_NBR ...
-------------------
2002,1381234567 ...
我自己写好的SQL是这样:
select CUS_ID,ACC_NBR from A
where ACC_NBR not in (select distinct ACC_NBR from b)
执行完以上语句后,过了半个小时还没有出来结果,请各位大侠支招,感谢!!!
6 个解决方案
#1
试试这个:
select CUS_ID,ACC_NBR from A
where not exists (select 1 from b where a.ACC_NBR = b.ACC_NBR )
#2
另外,可以考虑给ACC_NBR字段创建索引,这样可以提高查询的速度
#3
兄台这样果然有效率,22秒就搞定了,not in 和not exists有很大区别吗?开销好像差好远。
建索引我记得有利也有弊,因为我不是程序,只是一个数据库,为了方便分析用。
#4
哦,这个not in 和not exists ,产生的执行计划应该是不一样,not exists的效率更高。
#5
1楼的select 1也是一个提高效率的做法,你的语句中用distinct会增加查询开销,降低查询效率
#6
1楼的select 1也是一个提高效率的做法,你的语句中用distinct会增加查询开销,降低查询效率
#1
试试这个:
select CUS_ID,ACC_NBR from A
where not exists (select 1 from b where a.ACC_NBR = b.ACC_NBR )
#2
另外,可以考虑给ACC_NBR字段创建索引,这样可以提高查询的速度
#3
试试这个:select CUS_ID,ACC_NBR from A
where not exists (select 1 from b where a.ACC_NBR = b.ACC_NBR )
兄台这样果然有效率,22秒就搞定了,not in 和not exists有很大区别吗?开销好像差好远。
建索引我记得有利也有弊,因为我不是程序,只是一个数据库,为了方便分析用。
#4
试试这个:select CUS_ID,ACC_NBR from A
where not exists (select 1 from b where a.ACC_NBR = b.ACC_NBR )
兄台这样果然有效率,22秒就搞定了,not in 和not exists有很大区别吗?开销好像差好远。
建索引我记得有利也有弊,因为我不是程序,只是一个数据库,为了方便分析用。
哦,这个not in 和not exists ,产生的执行计划应该是不一样,not exists的效率更高。
#5
1楼的select 1也是一个提高效率的做法,你的语句中用distinct会增加查询开销,降低查询效率
#6
1楼的select 1也是一个提高效率的做法,你的语句中用distinct会增加查询开销,降低查询效率