小编mot*_*zzt的帖子

JOIN 短路

我一直在到处搜索,但我找不到任何关于它的东西,似乎每个人都只关心 WHERE 和 CASE。(而且我手头没有 SQL Server 来亲自验证它)

那么,一个简单的问题:SQL Server 是否基于 JOIN 条件短路 JOIN?如果我写:

TableA LEFT OUTER JOIN TableB ON 1=0 AND TableA.ID = TableB.A_ID
Run Code Online (Sandbox Code Playgroud)

SQL Server 会跳过连接吗?


编辑

好的,有人正确地指出这是在编译时解决的,所以我最好扩展一下这个问题。

以上只是作为一个例子,但结果证明这是一个糟糕的例子。我想知道的是,当这种情况在运行时发生时,SQL Server 是否会短路 JOIN,作为传递给存储过程的 @parameter 的结果。

我问是因为我肯定在过去几年中使用过类似的东西,但我想在与一些同事谈论它之前 100% 确定。那么,SQL Server 是否会将其短路,然后:

TableA LEFT OUTER JOIN TableB ON @parameter IS NOT NULL AND TableA.ID = TableB.A_ID
Run Code Online (Sandbox Code Playgroud)

如果它在 SP 内并且在 @parameter 设置为 NULL 的情况下调用它?如果存储过程是 WITH RECOMPILE 会有什么不同吗?

join sql-server t-sql

3
推荐指数
1
解决办法
1213
查看次数

存储过程使用的 UDF 是否在 SP 本身中进行了优化/合并?

这个问题让我疯狂了几天,我可能已经找到了答案,但我需要确认并检查最终的简单解决方案。

当存储过程使用一些用户定义的函数时,UDF 计划是合并到主计划中并且一切都得到优化还是每次都直接调用?

假设它没有发生,有没有办法强制 SQL Server 为特定的 SP 执行它?

sql-server query optimization

2
推荐指数
1
解决办法
77
查看次数

通过连接 2 个 int 列来更新字符串字段

我有 2 列 anint和 a tiny int,我想varchar用值更新另一列 a one column1 + '-' + column2。像这样的伪代码:

UPDATE COLUMN3 varchar = CONCAT (COLUMN1 INT AND + COLUMN2 TINYINT);
Run Code Online (Sandbox Code Playgroud)

我怎样才能用真正的代码做到这一点?

sql-server sql-server-2012 update concat

-2
推荐指数
1
解决办法
7501
查看次数