Este é um acompanhamento da pergunta ALTER VIEW descarta o Índice da Visualização .
A resposta aceita indica que ALTER VIEW eliminará automaticamente quaisquer índices definidos.
Isso é um pouco contra intuitivo para como outras operações semelhantes estão acontecendo:
- é natural esperar que coisas relacionadas, como permissões ou índices, sejam descartadas no objeto, não no alter
- alterar uma tabela não descarta nenhum índice (na verdade, você precisa descartar coisas como índices, restrições etc.)
Eu estou querendo saber por que ter esse comportamento por padrão em primeiro lugar (ou seja, há algum aspecto objetivo como redução de desempenho em alguns casos devido à alteração de exibição).
Pergunta: Qual é a lógica de descartar todos os índices para uma exibição alterada?
Kendra Little apresenta algumas boas teorias sobre por que isso acontece em sua recente postagem no blog: Alterar uma exibição indexada no SQL Server elimina todos os índices
Alterar a visualização pode alterar completamente a estrutura dos dados - número de colunas, número de linhas, tamanho das linhas, etc. Então, basicamente, a tabela precisaria ser descartada e recriada de qualquer maneira.
Acho que o segundo ponto, sobre a probabilidade de uma alteração entrar em conflito com as restrições de exibição indexada, é particularmente atraente.
Como Kendra menciona mais tarde, e outros mencionaram nos comentários aqui, seria bom se alguém fosse simplesmente impedido de alterar as visualizações indexadas. Mas essa mudança provavelmente nunca acontecerá devido a problemas de compatibilidade com versões anteriores.