Yep that's to be expected.
In terms of making it more efficient you want to look into combining cube faces that share the same material. How you achieve that depends on your project and requirements.
I would start by just building the planes for all the cubes in a level, then sort them by material type and finally use those to build new meshes, one for each type of material containing all of the faces that use that material.
If you levels are very large I might break down the 'one mesh per material' into several based on spatial volume, so that gross level culling can take place.
This should of course be done once at the start of the level. If you need it working in an 'editor' type mode, then just use a single special cube, that uses 6 materials so the designer can see what they are placing and once placed, rebuild the meshes that need it.