SQL中的EXISTS和IN之间的区别?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

SQL中的EXISTS和IN之间的区别?

保持可爱mmm 2019-11-15 17:53:05 106

SQL中的EXISTSand IN子句有什么区别?

我们什么时候应该使用EXISTS,而我们什么时候使用IN?

问题来源于stack overflow

SQL
分享到
取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2019-11-15 17:53:31

    该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使用时也可以调整计划。

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题