SQL中的EXISTSand IN子句有什么区别?
我们什么时候应该使用EXISTS,而我们什么时候使用IN?
问题来源于stack overflow
该exists关键字可以以这种方式被使用,但实际上它的预期的一种方式,以避免计数:
--this statement needs to check the entire table select count(*) from [table] where ...
--this statement is true as soon as one match is found exists ( select * from [table] where ... ) 这在您if有条件语句的情况下最有用,因为exists它比起来要快得多count。
该in是最好的使用,你有一个静态列表通过:
select * from [table] where [field] in (1, 2, 3) 当in语句中有表时,使用会更有意义join,但是大多数情况下都没有关系。查询优化程序应以两种方式返回相同的计划。在某些实现中(大多数是较旧的版本,例如Microsoft SQL Server 2000),in查询将始终获得嵌套的连接计划,而join查询将酌情使用嵌套,合并或哈希。更现代的实现更智能,即使在in使用时也可以调整计划。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。