首先要区分具体情况,虽然表里有几百万几千万的数据量,但是update是同时update这几百万条的数据呢?还是只更新其中某几条? 更新的数据量不同,解决方案自然也就有差异。同时update几百万数据,这个sql的性能影响在于数据库会做回滚段,以便异常时rollback。由于数据量大,性能就浪费在回滚段上了。 所以有2个方案供参考:1. update时 ,禁用回滚段的生成,跟你前面说的nologing应该是一个意思2. 分批更新,比如每更新10W条数据,就执行一次commit,这样效率也会比原来的要快。