I would suggest to build a small program with get runtime field statements to measure the comparative runtime, fetch reasonable amount of data ranging from 500-10000rows and they try different combinations of read.
My first choice would sorted, standard-standard with binary seach, Hashed seems slightly constrained to me with its requirement for unique key ( though now we have an option of having secondary indexes for hashed internal tables with newer Abap version but not yet on any of the client systems till now)