How to avoid view functions to be reverted?

I would like to make a function that returns 3 arrays, but I believe in some moment the arrays might be big enough that even reading them from an RPC might be avoided by the RPC provider...

For example, a function that returns:

        returns (address[]  memory _stakerAddresses,
            uint256[]  memory _stakerAmounts,
            uint256[] memory stakerTimestamps
        )

Would take too long to fetch maybe 1 million of each. In this scenario what is best to do?
maybe split fetching these arrays into peices?

Does an dedicated RPC from Alchemy has any guarantees on fetching without reverting this data?

Probably the best option if the data is stored onchain. Another option is that you contract could emit an event whenever there is a new staker (of a change to it) and keep track of all that offchain. Then maybe querying the offchain store would be easier.

Not sure about Alchemy, but nodes have a limit in that is expressed in terms of gas. AFAIK, this limit is usually 30~50M. This means that if running you call in a transaction cost more than 50M gas, then a node won't be giving you an answer. This is a mechanism designed to protect the nodes against DoS by infinite loops