用于连接的Oracle SQL"+ 0"语法?

dan*_*gel 2 sql oracle join

我正在使用Toad的SQL优化器,它在我的连接语句中添加了以下内容.

而不是说

emp.emplid = dept.emplid
Run Code Online (Sandbox Code Playgroud)

它建议

emp.emplid = dept.emplid + 0
Run Code Online (Sandbox Code Playgroud)

'+ 0'有什么作用?我在网上搜索过去的一小时,我找不到任何东西.我知道(+)的含义,但我从来没有见过这样的东西.

Sod*_*ved 7

+ 0不会是什么样子.它增加0到dept.emplid.但从性能的角度来看,这确实有所作为.通过将其转换为表达式,Oracle无法使用任何索引dept.emplid.

因此,如果Oracle正在选择索引,dept.emplid但您希望它使用不同的索引/计划,那么添加+ 0是一种影响优化器的方法,因为该特定列上不再匹配.任何表达都可以做到这一点.

另一种方法是进入优化提示.虽然这对于大型查询来说可能有点痛苦.