开发者社区> 问答> 正文

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

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

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

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-15 17:53:05 396 0
1 条回答
写回答
取消 提交回答
  • 该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使用时也可以调整计划。

    2019-11-15 17:53:31
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载