These are both pretty naive approaches, and unlikely to perform well in a real environment. If I had to take a guess, I would say Oliver2s' method is currently performing good because he is hitting the filesystem cache pretty hard (can you try to flush it completely and then retry your code?)
The problem is that HDDs are inherently slow and it may take up to two complete rotations of the platters until the head is over a chunk of data you want to read, and that assumes that the HDDs is completely spun up already and not serving anything else. Just loading on demand won't cut it, you should look into pre-loading chunks that are not yet visible, but in vicinity to already visible chunks, to avoid doing the HDD roundtrip in a blocking manner (as in: Read them in the background).
And the file format is also important, it may make sense to duplicate data in a way that allows you to just read data in sequence instead of having to seek around all the time. The Just Cause 2 guys ended up writing a system that uses multiple layers of terrain detail with duplicated data that allows them to just read in a huge chunk of the file at once as the player moves through the world. Their
post mortem may give you some ideas.