Oracle db Join与FROM a,b,c

时间:2015-04-13 05:30:13

标签: oracle select join

  

我已经使用SQL Server数据库一段时间了,我会这样做   在我的查询中随时随地加入表格。

     

现在我有一个Oracle数据库项目,正如我所看到的那样   一些oracle程序员编写的程序,复杂的数据选择   查询,我注意到她从未使用过连接。

问题:

是否有任何关于Oracle的内容暗示不使用连接或其人为因素?

1 个答案:

答案 0 :(得分:3)

没有。与任何其他合理的关系数据库一样,Oracle在执行基于集合的操作时以及在进行连接而不是在程序上模拟连接(例如,嵌套游标循环)时效率更高。

然而,我的猜测是,你并没有真正谈论缺乏连接的代码。我的猜测是你在谈论使用不同于你习惯的连接语法的代码。两个

SELECT a.*
  FROM a
       JOIN b ON (a.a_id = b.a_id)
       JOIN c ON (b.b_id = c.b_id)

SELECT a.*
  FROM a,
       b,
       c
 WHERE a.a_id = b.a_id
   AND b.b_id = c.b_id

是将a加入bc的查询。这两个查询完全相同 - Oracle解析器实际上会在内部将第一个查询重写为第二个查询。唯一的区别是第一个查询使用较新的SQL 99语法来指定其连接。

从历史上看,Oracle采用SQL 99语法的时间相对较晚,在SQL 99语法可用之前编写了大量代码,而且很多Oracle人员更喜欢旧式语法,如果没有其他。出于所有这些原因,使用旧的连接语法专门找到基于Oracle的项目是相对常见的。这没有什么本质上的错误(虽然我个人更喜欢新的语法)。