Achieving the best performance when using meshes

Hello everyone, I am working on a procedural supermarket, and as you can imagine, a large sized supermarket would contain tens of thousands of meshes. Like I said, this would be procedural, so if the supermarket was tall, shelves would be stacked higher, like in this picture, it is 7 shelves high:

I figured that to improve performance, I would have 1 mesh that is 3 shelves, rather than 3 meshes that each have 1 shelf, so that overall there are less meshes in the scene, and then would increment height at 3 shelves at a time. My question is this: Will combining 1 shelf into 3 in my 3D Modeler improve performance vs having 3 shelves with 1 shelf per mesh simply because there are less meshes but the same amount of polygons?

Thanks for the answers ahead of time, if this was confusing, just ask any questions to clarify.

Yes, that would improve performance—draw calls are one of the biggest things that affect performance, so by reducing the number of meshes in the game level it will reduce draw calls. Usually it’s better to take the hit in memory than it is to take the hit in the draw calls

Is there anyway that I could combine meshes & runtime? I’d like to be able to increment the shelf height by 1 rather than 3, but I’d also like to keep the draw calls down.

If they’re using the same material, then I believe you can use Instanced Static Mesh Blueprints–in this case instanced means batched so the elements of the blueprint will be combined to a single mesh. I’m not sure how dynamic it is.

I will be using instanced static mesh COMPONENTS, that way they can be instances with seperate materials (Price tags will be different for each shelf), is that a smart idea? I used this same approach with a terraria so that 1 actor block could have instances with any material.

If it was doing meshes with different materials, then my guess is that would add an additional draw call for each different material.

So 8 price tags with 3 materials = 3 draw calls?