In my opinion a Table varialbe is great for very small data sets (1 or two columns, and less than 100 rows), any more than that and you should consider a temp table.
Also consider that Table variables actually end up as unindexed tables in the tempdb anyway, as demonstrated below.
Declare @TableVariable Table (DT DateTime Default GetDate() NOT NULL)
Insert Into @TableVariable DefaultValues
WaitFor DELAY '00:00:10'
Create Table #TempTable (DT DateTime Default GetDate() NOT NULL)
Insert Into #TempTable Defauly Values
Select DT as TableVariable From @TableVariable
Select DT as TempTable From @TempTable
Select * from tempdb.sys.objects
and create_date between DateAdd(minute,-1,GetDate()) and GetDate()
Drop Table #TempTable
Its best to use this on local or development box where the useage is almost non-existant.
_________________________________________________________________________SSC Guide to Posting and Best Practices