First things first: Welcome to The Graph forum. Thanks for your time getting involved with The Graph and writing this question.
It depends heavily if you are the author of the subgraph or if you query a subgraph from someone else: If you are the author: You can add a “blockNumber” field to your entity and then filter for that field through the auto-generated
where argument. Furthermore, you could add
startBlock to your subgraph.yml to only care about events from a certain block.
If you are not the author of the subgraph, it is more tricky: You can run every query for a specific block height or hash as you said. But other than that, there is not much you can do. Maybe there are timestamps or other fields that you can narrow down your query with. If the subgraph code is open source, you can try to fork, add the block fields and deploy to your own account. But do not forget to open a PR.
If you want to learn more about the different possibilities to query subgraphs, try this tool: https://graphiql-online.com. Our internal playground is currently less advanced.