De Microsoft :
"Como um banco de dados é alterado por ações como adicionar índices ou alterar dados em colunas indexadas, os planos de consulta originais usados para acessar suas tabelas devem ser otimizados novamente, recompilando-os. Essa otimização ocorre automaticamente na primeira vez que um procedimento armazenado é Executar após o Microsoft SQL Server é reiniciado.Ele também ocorre se uma tabela subjacente usada pelo procedimento armazenado for alterada.Mas, se um novo índice é adicionado do qual o procedimento armazenado pode beneficiar, otimização não acontece até a próxima vez que o procedimento armazenado é executado depois que o Microsoft SQL Server for reiniciado.Nessa situação, pode ser útil forçar o procedimento armazenado a recompilar na próxima vez que ele for executado
Outro motivo para forçar um procedimento armazenado a recompilar é neutralizar, quando necessário, o comportamento "sniffing de parâmetro" da compilação de procedimento armazenado. Quando o SQL Server executa procedimentos armazenados, qualquer valor de parâmetro usado pelo procedimento quando ele é compilado é incluído como parte da geração do plano de consulta. Se esses valores representam os típicos com os quais o procedimento é chamado posteriormente, o procedimento armazenado se beneficia do plano de consulta toda vez que ele é compilado e executado. Caso contrário, o desempenho pode sofrer. "