在连接返回false的变量时,SQL Server是否甚至会查看表?

ada*_*101 5 sql t-sql sql-server

如果我像这样将表A加入表B ......

select A.* from A 
left outer join B on A.Id = B.aId and @param = 'someValue'
Run Code Online (Sandbox Code Playgroud)

和@param不等于'someValue',SQL Server是否尝试匹配表B中的记录,或者它是否足够聪明以至于知道条件永远不会成立?

Rem*_*anu 7

因此,在特定的上下文中,您可能会发现当@param具有不同的值时,外部连接表可能永远不会被探测,您不应该依赖它来获得正确性.请注意,探测意味着在表中搜索实际值.始终会检查元数据信息.例如,您不能作弊并要求加入不存在的表.

特别是,不要尝试创建一个单独的查询,其中应该有两个不同的查询(一个连接,一个不连接).