首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle外部连接-性能

Oracle外部连接-性能
EN

Stack Overflow用户
提问于 2009-08-20 20:14:40
回答 5查看 2.8K关注 0票数 2

编辑9-3-10:我最近发现这篇博客文章很有启发性。http://optimizermagic.blogspot.com/2007/12/outerjoins-in-oracle.html

有时候,一种或另一种联接语法实际上执行得更好。我还发现,当选择Oracle join语法而不是ANSI语法时,会发现性能略有提高(仅在VLDB中很明显)。也许这还不足以让人过于挑剔,但对于那些认真掌握Oracle DB的人来说,回顾一下这篇文章可能会有所帮助。

我知道Oracle有两个外部联接语法:

代码语言:javascript
复制
select a, b
from table1 
left outer join table2
on table2.foo = table1.foo

代码语言:javascript
复制
select a, b
from table1, table2
where table2.foo(+) = table1.foo

(假设我正确地掌握了第二个示例的语法。)

这两者之间有性能上的差别吗?起初,我认为这一定是开发人员的一种风格偏好,但后来我读到了一些东西,让我觉得也许有理由使用一种风格而不是另一种风格。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-20 22:37:35

“也许有理由使用一种风格而不是另一种风格。

原因是有的,但与性能无关的原因。ANSI风格的外部连接,以及标准的,提供了完整的外部连接和外部连接到多个表。

票数 4
EN

Stack Overflow用户

发布于 2009-08-20 21:41:33

Oracle在版本9i之前不支持ANSI语法。

由于该版本,这些查询执行相同的操作,并产生相同的计划。

正确的预9i语法如下:

代码语言:javascript
复制
SELECT  a, b
FROM    table1, table2
WHERE   table2.foo(+) = table1.foo
票数 2
EN

Stack Overflow用户

发布于 2009-08-20 20:18:47

没有表现上的差别。您还可以检查两个查询的执行计划以进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1308543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档