I just spent two days determining if the table variable approach was faster than the CURSOR approach. It was a no-brainer. The CURSOR approach was faster. And it became even faster when I created my CURSOR with LOCAL FAST_FORWARD.
With the TV approach your reads go up significantly. Then duration time might go down a little but not enough to make up for the increase in reads. And it was very inconsistent. Somtimes it went up and sometimes it went down.
With LOCAL FAST_FORWARD added to by CURSORs my reads and duration dropped significantly.
Here are my results on the CURSOR test.
CURSOR without LOCAL FAST_FORWARD
CPU---250
READS---14320
DURATON---750
CURSOR with LOCAL FAST_FORWARD
CPU -- 172
READS -- 10216
DURATION -- 283
The DURATION went from 750 to 283!!!!!
I spent the rest of the day changing all of our CURSORS to LOCAL FAST_FOWARD!