We have a SQL Server 2008 R2 Enteprise edition database with 6 file groups. The Primary one, and 5 for a table's clustered index and it's 4 non clustered indexes. The issue is that the primary file group was originally 1TB in side. once we pulled out the clustered index it made the free space in the file be roughly 90%. however it causes decent IO hits and takes an insane amount of time to reorganize the primary file so that there's only 10% free space. We don't want to take all of it so that it can grow without expanding over-head (though the remaining pieces in the PRIMARY filegroup are less than 1% of all growth). We have full backups every day and I was hoping that we could somehow restore the database without it being so big and bloated with free space. Those 900GB of free space can be put to good use easily.
If there is no way, I have a follow up question: when it does a restore, is it restored contiguously inside the file with essentially zero fragmentation or will it be restored in the same fragmented state it was in when backed up? If it is defragged then I could easily run the shrink or reorg command after a restore and it should move lightening fast compared to shrinking/reorg-ing in it's current state.