Loading many gameObjects

I am making a version of minesweeper in unity, with my own twist: instead of seeing the entire map, you control a character which sees little and tries to get as far out as possible.
For this project, I need to generate a lot of gameObjects that are tiles. Currently, it isn’t too difficult to load around 10,000 objects (approximately 2 seconds of loading time). However, my goal is to ideally have maps in the millions and I was wondering about the best way to do this.
My best guess as to how I can reach such large map sizes is to generate the map real time. From what I’ve seen, unity just isn’t able to handle such large amounts of objects. However, because all of the gameObjects are simple and can pretty much be described in unexplored, explored, marked and special, I hope there is a way to optimize loading times much more easily, as I am not well experienced with unity.
From what I tested, it seems like the loading time comes pretty much just from the amount of objects, not how complicated these objects are (I’m sure that I can make slight optimization with code, but it doesn’t seem anywhere close to enough).

The Tile system you want does not need gameobjects but Unity have a inbuild tile system where you can create your own tiles. See unity official tutorial Tilemap: The Basics - YouTube

But if you still need that many gameobjects you can have a scripts that reuses the gameobjects as you move around the map. See polling OBJECT POOLING in Unity - YouTube

Also Creating millions of gameobjects also means that you want to travel much further from origin where float precision limitations can mess up your game. There you have to create an illusion of infinity by relocating map to origin See Landscape streaming - VTS Plugin for Unity 3D - YouTube After some distance everything goes back to origin. Hope it helps