According to
the authors of Berkeley DB a BTree is
usually better than hashing for large datasets because you get better locality of reference. Hashing is horrible on caches and virtually guarantees that you hit disk. With a BTree on most applications, most of the time it is in cache.
So you don't seem to be totally wrong on that.