1. Does anyone know of a way to significantly speed up the read (and/or
Read the file sequentially, use OVRDBF to set NBRRCDS(nnnn) and SEQONLY(*YES nnnn). Set nnnn to the maximum number of records that will fit in the maximum fetch size for your version of the OS. Used to be 32K but now I think is 128K.
Even if you MUST process the file in keyed sequence you can get significant speed increase by reorganising it in the desired keyed sequence and then process it sequentially. The speed improvement in the I/O can often outweigh the cost of the reorganise. You will need exclusive access to perform the reorganise.
NBRRCDS controls blocking into main storage. SEQONLY controls blocking in your program.