Respostas:
As visualizações materializadas são baseadas em disco e são atualizadas periodicamente com base na definição da consulta.
As visualizações são apenas virtuais e executam a definição de consulta cada vez que são acessadas.
Eles avaliam os dados nas tabelas subjacentes à definição da visualização no momento em que a visualização é consultada . É uma visão lógica de suas tabelas, sem dados armazenados em nenhum outro lugar.
A vantagem de uma visão é que ela sempre retornará os dados mais recentes para você . A desvantagem de uma visão é que seu desempenho depende de quão boa é uma instrução select na qual a visão se baseia. Se a instrução select usada pela visualização ingressar em muitas tabelas ou usar associações baseadas em colunas não indexadas, a exibição poderá ter um desempenho ruim.
Eles são semelhantes às visualizações regulares, pois são uma visualização lógica dos seus dados (com base em uma instrução select); no entanto, o conjunto de resultados da consulta subjacente foi salvo em uma tabela . A vantagem disso é que, quando você consulta uma exibição materializada, está consultando uma tabela , que também pode ser indexada.
Além disso, como todas as junções foram resolvidas no momento da atualização da exibição materializada, você paga o preço da junção uma vez (ou sempre que atualizar sua exibição materializada), em vez de cada vez que você seleciona na exibição materializada. Além disso, com a reescrita de consulta ativada, a Oracle pode otimizar uma consulta que seleciona a origem da sua visualização materializada, de forma que, em vez disso, leia da sua visualização materializada. Nas situações em que você cria visualizações materializadas como formas de tabelas agregadas ou como cópias de consultas frequentemente executadas, isso pode acelerar bastante o tempo de resposta do seu aplicativo de usuário final. A desvantagem, porém, é que os dados recuperados da visão materializada estão tão atualizados quanto a última vez em que a visão materializada foi atualizada .
As visualizações materializadas podem ser definidas para serem atualizadas manualmente, em um agendamento definido ou com base no banco de dados que detecta uma alteração nos dados de uma das tabelas subjacentes . As visualizações materializadas podem ser atualizadas de forma incremental combinando-as com logs de visualização materializados, que atuam como fontes de captura de dados alterados nas tabelas subjacentes.
As visualizações materializadas são usadas com mais frequência em aplicativos de data warehousing / business intelligence, onde a consulta de grandes tabelas de fatos com milhares de milhões de linhas resultaria em tempos de resposta à consulta que resultariam em um aplicativo inutilizável.
As visualizações materializadas também ajudam a garantir um momento consistente no tempo, semelhante ao isolamento de instantâneo .
Uma exibição usa uma consulta para extrair dados das tabelas subjacentes.
Uma visualização materializada é uma tabela em disco que contém o conjunto de resultados de uma consulta.
As visualizações materializadas são usadas principalmente para aumentar o desempenho do aplicativo quando não é viável ou desejável usar uma visualização padrão com os índices aplicados a ela. As visualizações materializadas podem ser atualizadas regularmente por meio de gatilhos ou usando a ON COMMIT REFRESH
opção Isso requer algumas permissões extras, mas não é nada complexo. ON COMMIT REFRESH
está em vigor desde pelo menos o Oracle 10.
As visualizações são essencialmente estruturas lógicas semelhantes a tabelas, preenchidas dinamicamente por uma determinada consulta. Os resultados de uma consulta de exibição não são armazenados em nenhum lugar do disco e a exibição é recriada toda vez que a consulta é executada. As visualizações materializadas são estruturas reais armazenadas no banco de dados e gravadas no disco. Eles são atualizados com base nos parâmetros definidos quando são criados.
Visão: View é apenas uma consulta nomeada. Não armazena nada. Quando há uma consulta na exibição, ela executa a consulta da definição da exibição. Os dados reais vêm da tabela.
Visualizações materializadas: armazena dados fisicamente e é atualizado periodicamente. Ao consultar o MV, ele fornece dados do MV.
Adicionando à resposta bastante completa de Mike McAllister ...
As visualizações materializadas só podem ser definidas para serem atualizadas automaticamente através do banco de dados, detectando alterações quando a consulta de visualização é considerada simples pelo compilador. Se for considerado muito complexo, não será possível configurar o que são gatilhos essencialmente internos para rastrear alterações nas tabelas de origem e atualizar apenas as linhas alteradas na tabela mview.
Ao criar uma exibição materializada, você descobrirá que o Oracle cria o mview e como uma tabela com o mesmo nome , o que pode tornar as coisas confusas.
As visualizações materializadas são a visualização lógica dos dados conduzidos pela consulta de seleção, mas o resultado da consulta será armazenado na tabela ou no disco, também a definição da consulta também será armazenada no banco de dados.
O desempenho da visualização Materializada é melhor que a visualização normal, porque os dados da visualização materializada serão armazenados na tabela e a tabela pode ser indexada de forma mais rápida para a junção. A junção também é feita no momento da atualização das visualizações materializadas, portanto, não é necessário disparar sempre junte a instrução como no caso de exibição.
Outra diferença inclui que, no caso do View, sempre obtemos os dados mais recentes, mas no caso da visualização Materializada, precisamos atualizar a visualização para obter os dados mais recentes. No caso da visualização Materializada, precisamos de um gatilho extra ou algum método automático para manter a MV atualizada, isso não é necessário para visualizações no banco de dados.