TSQL中的问题解决方法可以通过不同的方法获得,使用任何一种方法都可以看到所需的结果。达到最终结果的方法之一是使用IN和EXISTS子句。子句的使用有助于参考可用的子查询过滤结果集。 IN和EXISTS的执行略有不同。

有多种因素决定是否要使用IN或EXISTS。其中之一是表格中可用的数据量。大量数据导致SQL Server返回使用索引扫描而不是使用索引查找。

差异性

给出的统计数据还告诉了很多应该遵循的执行计划。当服务器积累了足够的统计信息以做出有效决策时,以及第一次没有统计信息时,将显示差异。使用的硬件还确定将使用IN还是EXISTS。这在很大程度上取决于可用的CPU数量。

当需要将查询结果与另一个子查询匹配时,将运行EXISTS。另一方面,在检索列表中特定列的值时使用IN。仅根据适当性(即您认为适当使用)来决定使用哪个。

如果使用子查询并返回空值,则整个语句将变为NULL。这实际上指向使用EXISTS关键字。当需要对子查询中的各个值进行比较时,可以使用IN关键字。 EXISTS关键字主要用于对true或false语句的求值,而IN用于大多数对应的子查询语句。

通常,EXISTS将比IN快,原因是当运行EXISTS时,搜索找到了匹配项,并将审查条件是否被证明是正确的。在运行IN时,它将从子查询中收集所有结果,并将其呈现出来以进行进一步处理,并且此过程需要一段时间。

重要的是要注意,查询短语必须正确执行并在运行前进行检查。无法确保查询正确,结果EXISTS和IN会显示不同的值,这并不是在SQL Server中使用它们的目的。优化器在按其应有的方式工作时必须始终处于最佳状态。

总结

  1. TSQL中的问题解决通常是通过EXISTS和IN完成的;
  2. 推出EXISTS和IN时会观察到细微的差异,尽管每个优化的值都应相同;
  3. 统计信息是确定是否存在EXISTS或IN的决定因素之一;
  4. 使用的硬件对于确定是否要部署EXISTS或IN也是至关重要的;
  5. 当需要将给定查询的结果与另一个子查询相关联时,EXISTS很有用。当需要评估真假时,EXISTS也很常见;
  6. 当需要检索列表中的特定列时,通常使用IN。当需要在子查询中进行值比较时,也通常使用它;
  7. 在运行,找到匹配并检查条件是否被证明为真时,EXISTS通常比IN快;
  8. IN比较慢,因为它从子查询中收集所有结果并对其进行处理。
  9. 尽管存在不同的执行方式,但优化应该在EXISTS和IN中给出相似的结果。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Sql Exists和In语句
本文链接:https://www.vsdiffer.com/vs/sql-exists-vs-in.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。