Pergunta

Eu entendo o que são visualizações indexadas, mas me pergunto o que exatamente acontece quando os dados nas tabelas subjacentes são alterados?Todo o cache de visualização foi descartado ou apenas alterou as linhas?

Eu tenho uma consulta muito complexa em várias tabelas (+5) que é usada para pesquisar a disponibilidade de hotéis (+100 mil registros) e a visualização indexada IMHO pode melhorar significativamente o desempenho.Mas os dados (poucas linhas) são alterados com frequência (quarto foi vendido, quartos gratuitos alterados no administrador) e se a visualização fosse reconstruída cada vez que apenas uma linha fosse alterada, seria um gargalo para meu aplicativo.

Ou alguma idéia de como "armazenar em cache" consultas muito complexas?

Obrigado.

Foi útil?

Solução

Da documentação do technet:

Diferentemente dos índices comuns, uma única inserção de linha em qualquer uma das tabelas participantes pode causar várias alterações na linha em uma visualização indexada. Isso ocorre porque a linha única pode se unir a várias linhas de outra tabela. O mesmo vale para atualizações e exclusão. Consequentemente, a manutenção de uma visão indexada pode ser mais cara do que manter um índice na tabela.

Fonte:

http://technet.microsoft.com/en-us/library/cc917715.aspx#xstsection124121120120

Ou seja, parece que as linhas são atualizadas quando relevantes, sem necessariamente ter que atualizar/recriar a visão na íntegra.

Outras dicas

Presumo que você esteja executando o SQL Server.Mais de 100 mil linhas não é muito.Se você estiver ingressando em tabelas 5ish, sugiro que você certifique-se de que haja índices de cobertura nas colunas que está ingressando antes de considerar a implementação de visualizações indexadas.Use o analisador de consulta para encontrar diretamente o gargalo em sua consulta.Se você estiver tendo problemas de desempenho em tabelas tão pequenas, provavelmente haverá varreduras de tabelas desagradáveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top