sql 语句中in ,not in

sql 语句中in ,not in 效率很差么?有什么好的方式转换成exists 和not exists.

如果系统不自动优化,并且IN的结果很多,那么有可能IN和NOT IN的效率低些。

所有的IN都可以转换为EXISTS,同样NOT IN可以转换为NOT EXISTS,下面说明IN转换为EXISTS的方法,NOT的类似:

IN的语句:
SELECT * FROM A WHERE F IN (SELECT F FROM B)

可以转换为如下的EXISTS语句:
SELECT * FROM A WHERE EXISTS
(SELECT * FROM B WHERE A.F=B.F)

上面转换的说明:两个WHETE都可能有更多都条件,那么直接AND在相应的地方即可。另外表A和B的关联字段可能名字表同,也司没关系的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-08-01
in 和 not in 是说在或者不在某一个范围之内,效率上面会有些差,而exists 和not exists是说存不存在