两者有什么区别EXISTS
and IN
SQL 中的子句?
我们什么时候应该使用EXISTS
,以及我们什么时候应该使用IN
?
The 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
.
The in
最好在需要传递静态列表的情况下使用:
select * from [table]
where [field] in (1, 2, 3)
当你有一张桌子in
声明使用 a 更有意义join
,但大多数情况下这并不重要。无论哪种方式,查询优化器都应该返回相同的计划。在某些实现中(大多数是较旧的,例如 Microsoft SQL Server 2000)in
查询总是会得到一个嵌套连接 https://technet.microsoft.com/en-us/library/ms191318(v=sql.105).aspx计划,同时join
查询将使用嵌套,merge https://technet.microsoft.com/en-us/library/ms190967(v=sql.105).aspx or hash https://technet.microsoft.com/en-us/library/ms189313(v=sql.105).aspx作为适当的。更现代的实施方式更加智能,即使在以下情况下也可以调整计划:in
用来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)