Use uma tabela temporária. Você verá um desempenho muito melhor.
Uma explicação detalhada para o raciocínio por trás disso está além do escopo da pergunta inicial, no entanto, para resumir:
- Uma variável de tabela é otimizada para onerow, pelo SQL Server, ou seja, assume que 1row será retornado.
- Uma variável de tabela não cria estatísticas.
Google tabela temporária vs. variável de tabela para uma riqueza de recursos e discussões. Se você precisar de assistência específica, envie-me um e-mail ou entre em contato comigo no Twitter.