dot*_*00b 4 t-sql sql-server informix join ansi
所以我们正在从Informix迁移到Sql Server.我注意到在Informix中,查询是以这种方式编写的:
select [col1],[col2],[col3],[col4],[col5]
from tableA, tableB
where tableA.[col1] = table.[gustavs_custom_chrome_id]
Run Code Online (Sandbox Code Playgroud)
我在SQL Server中编写的所有查询都写成:
select [col1],[col2],[col3],[col4],[col5]
from tableA
inner join tableB on tableA.[col1] = table.[gustavs_custom_chrome_id]
Run Code Online (Sandbox Code Playgroud)
现在,我的第一个想法是:第一个查询很糟糕.它可能会创建这个巨大的记录集然后使用Where子句与实际记录集相关联.因此,它对性能不利.而且它是非ansi.所以这是双重的坏事.
然而,经过一些谷歌搜索,似乎它们在理论上几乎是一样的.它们都符合ANSI标准.
所以我的问题是:
Aar*_*and 17
那么,"更好"是主观的.这里有一些风格.但我会直接解决你的问题.
第一个例子的问题是
很容易无意中导出交叉产品(因为它更容易省略连接标准)
在向连接添加越来越多的表时,调试连接条件也变得很困难
由于旧式外连接(*=)语法已被弃用(长期以来已记录为返回不正确的结果),当需要引入外连接时,需要混合新样式和旧样式连接...为什么要提升不一致?
虽然它不是最佳实践的权威,但Microsoft建议使用显式的INNER/OUTER JOIN语法
用后一种方法:
我写了凯文指出的帖子.