Sabemos que a estrutura do memorando é removida e alguns planos alternativos caros são descartados durante a otimização. Eu queria saber se existe alguma maneira de evitar isso e deixar o otimizador considerar apenas todos os planos possíveis e selecionar o melhor de todas as alternativas?
Existe, mas não o divulgo porque seria mal compreendido e mal aplicado. De qualquer forma, isso não resultaria em uma pesquisa exaustiva do espaço do plano, porque apenas um conjunto limitado de transformações (aquelas que geralmente produzem bons resultados) são implementadas.
Prevenir a poda e o descarte geralmente resultaria simplesmente em (muito) tempos de compilação mais longos sem muita melhoria na qualidade final do plano, se houver.
Por fim, a pergunta é natural e razoável, mas se baseia em um mal-entendido dos objetivos do otimizador de consultas do SQL Server: foi desenvolvido para encontrar rapidamente bons planos para consultas comuns. Não foi criado em uma estrutura projetada para pesquisa exaustiva.
Se você tiver uma situação do mundo real que se beneficiaria de uma abordagem diferente da otimização, poderia argumentar no site do Connect (embora eu ache improvável que a Microsoft invista os recursos de engenharia necessários).