我已经使用SQL Server数据库一段时间了,我会这样做 在我的查询中随时随地加入表格。
现在我有一个Oracle数据库项目,正如我所看到的那样 一些oracle程序员编写的程序,复杂的数据选择 查询,我注意到她从未使用过连接。
问题:
是否有任何关于Oracle的内容暗示不使用连接或其人为因素?
答案 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
加入b
到c
的查询。这两个查询完全相同 - Oracle解析器实际上会在内部将第一个查询重写为第二个查询。唯一的区别是第一个查询使用较新的SQL 99语法来指定其连接。
从历史上看,Oracle采用SQL 99语法的时间相对较晚,在SQL 99语法可用之前编写了大量代码,而且很多Oracle人员更喜欢旧式语法,如果没有其他。出于所有这些原因,使用旧的连接语法专门找到基于Oracle的项目是相对常见的。这没有什么本质上的错误(虽然我个人更喜欢新的语法)。