Welcome to the forums @jackatthekilns!
In addition to what @Kequc suggested, another approach you can take is break your world up into chunks/tiles by creating individual scenes that cover a certain amount of ground, and then spawn/despawn these chunks/tiles as the player moves around the world. I know this is how older open world games handle creating massive worlds (like the Elder Scrolls Morrowind for example). I don't know how easy or hard it would be to make such a system though.
@Kequc said:
I'll often find where I expect to see bottle necks, they are somewhere else entirely. Maybe all you need for example is to load and unload enemies across the map unless they are within range.
Same here: I find that often what I thought was a bottleneck or performance issue in the code turns out not to be, and rather some other part is causing the issue. The worst is when you figure out that a part of the code you thought was optimized and clever is the code causing the issue :lol: