If you need full-file-scan, it is better to use READ PHYSICAL (L2).
Know your prod-data: make sure you're not drilling too deep into current record, when you can filter-out the record early (inverse search). Maybe you only need to update 0.1 % of your records.
Make sure you are not leaving transaction open for too long (lets say you did 1 update, and a bunch of reads after that, eventually leading to trx-timeout-abend).
Keep separate ADADCL for updated fields, so that you could use INITIALIZE RECORD-BUF, when needed.
Only do read-hold when it's time to update, and keep track of updates count.
Multifetch can be useful, but I never tried it myself.