我们正在开发ETL作业,并且我们的顾问在连接表时一直使用“旧式” SQL

select a.attr1, b.attr1
from table1 a, table2 b
where a.attr2 = b.attr2

而不是使用内部连接子句
select a.attr1, b.attr1
from table1 as a inner join table2 as b
   on a.attr2 = b.attr2

我的问题是,从长远来看,使用旧的“where join”是否存在风险?这种联接被支持并保持为ANSI标准的时间有多长?我们的平台是SQL Server,我的主要原因是将来不再支持这些“where joins”。发生这种情况时,我们必须使用“内部联接”样式的联接来修改所有ETL作业。

最佳答案

我怀疑是否会支持“where joins”。不支持它们是不可能的,因为它们基于笛卡尔积和简单的过滤。他们实际上不是联接。

但是使用更新的联接语法有很多原因。除其他外:

  • 可读性
  • 可维护性
  • 轻松更改外部联接
  • 关于SQL连接: Future of the SQL ANSI Standard (where vs join)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3684259/

    10-16 16:35