If you select only the RowID and Path_Hash, then you should be able to SELECT quote a lot of records I think - I would guess in the high-tens to low-hundreds of millions perhaps? Do you expect to have that many?

You might be able to speed things up if you can collect a bunch of hashes - you'd have to experiment with collecting tens, hundreds, or thousands of them to see what has the best performance. Once you've collected a bunch you could grab all matching records with "SELECT * FROM Files WHERE Path_Hash IN (<CommaSeparatedListofCollectedHashes>)". You could then loop the list and perform you further processing on the matches. Not sure if collecting hashes before hitting the DB is possible in your scenario or not.