IF存在的不同写法之间的区别?(Difference between different ways of writing IF Exists?)

编程入门 行业动态 更新时间:2024-10-26 21:25:10
IF存在的不同写法之间的区别?(Difference between different ways of writing IF Exists?)

我正在使用SQL Server 2008 R2

我只想测试一下表中是否存在某种东西

IF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES'

他们在结果/副作用/表现(无论多么微小)方面有任何差异吗?

谢谢

I am using SQL Server 2008 R2

I just want to test if something exists in a table

IF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES' IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES'

Do they have any differences in result/side effect/performance (no matter how tiny)?

Thank you

最满意答案

绝对没有区别 - IF EXISTS(...)只会根据语句中的WHERE子句检查是否存在行。

声明中的其他所有内容都是不相关的 - 无论您使用SELECT *还是SELECT 1或SELECT TOP 1 *都没有任何区别。 即使使用SELECT * ....也不会从表中选择所有列 - 它只是再次检查基于WHERE子句的数据是否存在。

所有五个查询具有完全相同的执行计划

Absolutely no difference - the IF EXISTS(...) will only check for existence of rows based on the WHERE clause in your statement.

Everything else in the statement is irrelevant - doesn't make any difference whether you use SELECT * or SELECT 1 or or SELECT TOP 1 *. Even using SELECT * .... does NOT select all columns from the table - it again just checks for existence of the data based on the WHERE clause.

All five queries have exactly the same execution plan

更多推荐

本文发布于:2023-07-29 15:52:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1317617.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:写法   区别   Difference   Exists   writing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!