我正在使用Toad的SQL优化器,它在我的连接语句中添加了以下内容.
而不是说
emp.emplid = dept.emplid
Run Code Online (Sandbox Code Playgroud)
它建议
emp.emplid = dept.emplid + 0
Run Code Online (Sandbox Code Playgroud)
'+ 0'有什么作用?我在网上搜索过去的一小时,我找不到任何东西.我知道(+)的含义,但我从来没有见过这样的东西.
该+ 0不会是什么样子.它增加0到dept.emplid.但从性能的角度来看,这确实有所作为.通过将其转换为表达式,Oracle无法使用任何索引dept.emplid.
因此,如果Oracle正在选择索引,dept.emplid但您希望它使用不同的索引/计划,那么添加+ 0是一种影响优化器的方法,因为该特定列上不再匹配.任何表达都可以做到这一点.
另一种方法是进入优化提示.虽然这对于大型查询来说可能有点痛苦.