SQL Server 性能提示

标签 sql sql-server performance sql-server-2005 tsql

这个问题在这里已经有了答案:




10 年前关闭。




Possible Duplicate:
Is the SQL WHERE clause short-circuit evaluated?



我对此查询有以下疑问:
select * from sometable 
where 1=1 or (select count(*) from table2 > 0)

如果第一个条件为真( 1=1 ),SQL Server 是否仍然执行内部选择?
还是在第一个条件为真时停止(如 C)

最佳答案

当 (1=1) 为真时停止。您可以使用 Ctrl-M 然后 Ctrl-E 轻松检查

考虑这个查询

select * from master..spt_values
where 1=1 or (select count(*) from master..sysobjects) > 0

执行计划仅显示 master..spt_values 中的扫描并且在 sysobjects 中没有事件.

与C相反,当时它不会停止最左边 条件为真,相反查询优化器计算出 独立于所呈现的顺序 这是评估的最低成本。对于常量 1 vs 1赢家很明显。

关于SQL Server 性能提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032882/

相关文章:

performance - 这个 Neo4j 查询可以优化吗?

android - 为什么 Android 上的 PNG 压缩比 JPEG 慢得多?

mysql - 在加入 Sql 之间时如何用例

sql - SQLite3触发器:添加一列

mysql - 更新 SET 新的子字符串名称

mysql - SQL查询区别

c# - 在 SQL Server 中使用 Entity Framework 核心 3.1 时指定列类型

asp.net - Azure 云服务与现有 Asp.Net 网站的 VM

performance - 为什么没有相关输出时代码似乎没有执行?

mysql - 计算重复列并更新计数器列