不一定。因为dbms可能会进行查询转换。也就是你这么写了,但是数据库可能给你等价重写。所以是否影响效率,得看执行计划是否一样。但是公司这么要求有道理,因为不是所有的子查询SQL都可以重写。
转:
子查询为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。在这种情况下可以考虑用联接查询来取代。
如果要用子查询,那就用EXISTS替代IN、用NOT EXISTS替代NOT IN。因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高。无论在哪种情况下,NOT IN都是最低效的。因为它对子查询中的表执行了一个全表遍历。