Eu tenho uma visão que envolve LEFT JOINS em mais de 20 tabelas para uma tabela base, mas ao consultar essa visão e olhar para os planos de execução, estou recebendo algo totalmente inesperado.
Por exemplo, com a consulta abaixo, eu esperaria uma busca de índice clusterizado na tabela:
SELECT id FROM dbo.TableName WHERE id = 256
Considerando que, quando uso a exibição, obtenho a busca de índice clusterizado na tabela junto com 3 loops aninhados (junção externa esquerda).
SELECT id FROM dbo.ViewName WHERE id = 256
Por que isso ocorreria? O exemplo acima é muito simples, mas ao selecionar colunas adicionais da exibição, cada vez mais LEFT JOINs desnecessários aparecem no plano de execução.
O link fornecido por Martin Smith para uma pergunta SO existente me forneceu a resposta: