Map reduce script is the most applicable due to the map splitting the data and reduce processing those chunks, allowing for multiple threads if you have the oracle module that give you multiple threads (5/10).
Can handle as much data as you want if you set it up correctly.
Do not use a scheduled script, while the yield functionality will work, map reduces were made for this exact requirement and replaced this functionality.
Suggest using n/query as well to speed it up but if you want to run a search in the code, that'll be sufficient.