Resultant QVD size really depends on nature of your data. Size is dependent on whether your data is loaded as optimized or unoptimized and joins used. If you can explain ur scenario I'll be able to help with some solution.
There are two suggestions based on what I understood...
Try using Joins instead of concatenate: Concatenate is useful to load chunks of data from multiple tables into one resultant when they have same Column names or almost same columns. Search for posts on differences for concatenate and joins
If your tables are having values in a Matrix format try to convert it into straight table using CROSSTABLE and observe data size