【发布时间】:2012-06-30 09:25:38
【问题描述】:
所以我们正在从 Informix 迁移到 Sql Server。而且我注意到在 Informix 中查询是以这种方式编写的:
select [col1],[col2],[col3],[col4],[col5]
from tableA, tableB
where tableA.[col1] = table.[gustavs_custom_chrome_id]
而我在 SQL Server 中编写的所有查询都写成:
select [col1],[col2],[col3],[col4],[col5]
from tableA
inner join tableB on tableA.[col1] = table.[gustavs_custom_chrome_id]
现在,我的第一个想法是:第一个查询很糟糕。它可能会创建这个巨大的记录集,然后使用 Where 子句减少到实际的记录集。因此,这对性能不利。而且它不是ansi。所以它是双重坏的。
但是,经过一番谷歌搜索后,从理论上讲,它们似乎几乎相同。它们都符合 ANSI 标准。
所以我的问题是:
- 两个查询的执行方式相同吗? IE。运行速度一样快,并且总是给出相同的答案。
- 两者都真正符合 ANSI 标准吗?
- 有什么突出的理由让我应该推崇一种风格而不是另一种风格?还是我应该独自离开足够好?
注意:这些只是查询的示例。我见过一些查询(第一类)一次最多连接 5 个表。
【问题讨论】:
-
在这里看到一篇关于它的好帖子:sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/…
-
@spender 好吧,您链接到的那个问题被关闭为“不是一个真正的问题”。所以你是说我的问题“不是一个真正的问题”吗?因为我当然不同意。
-
Informix 中的旧代码是使用旧样式“FROM 子句中的表名逗号列表”编写的。新代码是使用新的(如自 1992 年 SQL 标准以来的)符号和显式 JOIN 操作编写的。使用新样式。时期。讨论完毕。仅将旧样式视为旧样式 - 升级 ASAC(方便时尽快)。
-
我在使用旧的 Informix 表示法时从来没有遇到过问题。您是否彻底分析了迁移到 SQL Server 的利弊?
标签: sql-server tsql join informix ansi