在对update操作进行性能优化过程中,修改原来普通的修改语句,采用多表连合修改的方式,诸如:
update (select /*+ BYPASS_UJVC */ name , rname
from table1 t1, table2 t2
where t1.id = t2.id
and t1.id is not null)
set name = rname
的写法,性能确实有所提高,但现在出现一个问题是,我发现/*+ BYPASS_UJVC */在9.2.0.8.0版本上无效,仍然要求table2必段对字段id建唯一性索引,才可以。
也许大家说建个索引就得了,但问题是,有些处理中table2可能是一段SQL语句,用group by 来确保了数据唯一性的,但由于数据库对/*+ BYPASS_UJVC */的无效,所以不能执行,现在看来唯一的办法就是对oracle数据库升级,也不知道这倒底是不是oracle的BUG,因为我们发现在比此版本低或者高的版本上都是可以的。
 不知道有人知道是怎么回事,是否oracle有这方面的补丁?