I do something similar in my game, in the sense that I generate the terrain in real time. The data for that generation is pre-defined, so that’s a big difference. But the principle is the same, since terrain engine doesn’t know that the data is pre-defined, it just builds terrain based on the data it is given.
I use 2D height maps as an input, and my terrain engine slices the world into tiles, each tile is a separate mesh and is built in a worker thread.
On an OK desktop PC it takes about 1ms to build a tile 28x28 vertices (1,568 polygons). The advantage of this approach for me - is that I only built tiles that the user is going to see, and I skip the rest. This way my “map” loads very quickly, in a matter of a couple a few miliseconds, usually less than 1 frame.
The tile size I mentioned is arbitrary, I chose that size because it produced best performance for lower-end devices for my game, but there is no hard rule there.
Here are a couple of screenshots to demonstrate

