Claro.
Uma visão normal é uma consulta que define uma tabela virtual -- você não tem os dados na tabela, você os cria na hora executando.
Uma visualização materializada é uma visualização em que a consulta é executada e os dados são salvos em uma tabela real.
Os dados na visualização materializada são atualizados quando você solicita.
Alguns casos de uso:
-
Temos várias instâncias Oracle em que queremos ter os dados mestre em uma instância e uma cópia razoavelmente atual dos dados nas outras instâncias. Não queremos supor que os links de banco de dados entre eles estarão sempre ativos e operando. Então, configuramos visualizações materializadas nas outras instâncias, com consultas comoselect a,b,c from [email protected]
e diga-lhes para atualizar diariamente.
-
As visualizações materializadas também são úteis na reescrita de consultas. Digamos que você tenha uma tabela de fatos em um data warehouse com todos os livros emprestados de uma biblioteca, com datas e tomadores. E essa equipe regularmente quer saber quantas vezes um livro foi emprestado. Em seguida, construa uma visualização materializada comoselect book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name
, defina-o para qualquer frequência de atualização desejada -- geralmente a frequência de atualização para o próprio armazém. Agora, se alguém executar uma consulta como essa para um livro específico nobook_trans
tabela, o recurso de reescrita de consulta no Oracle será inteligente o suficiente para observar a visualização materializada em vez de percorrer milhões de linhas embook_trans
.
Normalmente, você está construindo visualizações materializadas por motivos de desempenho e estabilidade - redes instáveis ou fazendo longas consultas fora do horário de expediente.