How this relates to the real world is this...
1) No clustered Index = A Heap
2) Add some Non-clustered indexes to a table and you still have a heap
3) Add more data with the non-clustered indexes and your heaped table will GROW by leaps and bounds !!
4) You want to make the table smaller BUT a heap cannot be defragged! (nothing works, DBCC indexdefrag etc..)
5) You MUST create a clustered index to force defragmentation
Moral - NEVER create non-clustered indexes without creating a clustered index first!
I have come across this knowledge through evaluation of a legacy database which is massive for apparently no reason. I could not shrink its size no matter what I did. Only after much reading did I come across the "Heap Gem" of knowledge and was able to cut the DB down to 40% of its original size by adding, yes adding, clustered indexes to the top 30 largest tables. There were hundreds of tables, dunno what would have happened by adding a CI to all appropriate tables.
- B