Respostas:
Eles são chamados de visualizações indexadas no SQL Server - leia estes documentos para obter mais informações básicas:
Basicamente, tudo que você precisa fazer é:
e pronto!
A parte complicada é: a visualização deve satisfazer uma série de restrições e limitações - aquelas são descritas no white paper. Se você fizer isso - é tudo o que existe. A visualização está sendo atualizada automaticamente, sem necessidade de manutenção.
Recursos adicionais:
Embora puramente da perspectiva da engenharia, as visualizações indexadas parecem algo que todos poderiam usar para melhorar o desempenho, mas o cenário da vida real é muito diferente. Não tenho tido sucesso usando exibições indexadas onde mais preciso, devido a muitas restrições sobre o que pode ser indexado e o que não pode.
Se você tiver junções externas nas visualizações, elas não podem ser usadas. Além disso, expressões de tabela comuns não são permitidas ... Na verdade, se você tiver qualquer ordenação em subseleções ou tabelas derivadas (como partição por cláusula), você também está sem sorte.
Isso deixa apenas cenários muito simples para utilizar visualizações indexadas, algo na minha opinião pode ser otimizado criando índices apropriados em tabelas subjacentes de qualquer maneira.
Ficarei emocionado em ouvir alguns cenários da vida real em que as pessoas realmente usaram visualizações indexadas para seu benefício e não poderiam ter passado sem elas
(NOEXPAND)
dicas às consultas que usam as visualizações indexadas. E então você percebe a diferença. A vantagem de usar as visualizações indexadas versus "indexar corretamente as tabelas" é limitar a seleção de registros, caso contrário, você está correto, seria o mesmo.
Você pode precisar de um pouco mais de conhecimento sobre o que realmente é uma Visualização Materializada. No Oracle, eles são um objeto que consiste em vários elementos quando você tenta construí-lo em outro lugar.
Um MVIEW é essencialmente um instantâneo de dados de outra fonte. Ao contrário de uma visão, os dados não são encontrados quando você consulta a visão, eles são armazenados localmente em uma forma de tabela. O MVIEW é atualizado usando um procedimento em segundo plano que inicia em intervalos regulares ou quando os dados de origem são alterados. O Oracle permite atualizações completas ou parciais.
No SQL Server, eu usaria o seguinte para criar um MVIEW básico para (completar) atualizar regularmente.
Primeiro, uma visão. Isso deve ser fácil para a maioria, já que as visualizações são bastante comuns em qualquer banco de dados. Em seguida, uma tabela. Isso deve ser idêntico à visualização em colunas e dados. Isso armazenará um instantâneo dos dados de exibição. Em seguida, um procedimento que trunca a tabela e a recarrega com base nos dados atuais da visualização. Finalmente, um trabalho que aciona o procedimento para iniciá-lo.
Todo o resto é experimentação.
Quando a exibição indexada não é uma opção e atualizações rápidas não são necessárias, você pode criar uma tabela de cache de hack:
select * into cachetablename from myviewname
alter table cachetablename add primary key (columns)
-- OR alter table cachetablename add rid bigint identity primary key
create index...
em seguida, sp_rename view / table ou altere quaisquer consultas ou outras exibições que façam referência a ele para apontar para a tabela de cache.
agendar diariamente / noturno / semanal / outros itens de atualização como
begin transaction
truncate table cachetablename
insert into cachetablename select * from viewname
commit transaction
NB: isso vai consumir espaço, também em seus logs tx. Melhor usado para pequenos conjuntos de dados que são lentos para computar. Talvez refatorar para eliminar colunas "fáceis, mas grandes" primeiro em uma visão externa.
Para o MS T-SQL Server, sugiro criar um índice com a instrução "incluir". A exclusividade não é necessária, nem a classificação física de dados associada a um índice clusterizado. O "Índice ... Incluir ()" cria um armazenamento de dados físicos separado mantido automaticamente pelo sistema. É conceitualmente muito semelhante a uma Visão Materializada Oracle.
https://msdn.microsoft.com/en-us/library/ms190806.aspx
https://technet.microsoft.com/en-us/library/ms189607(v=sql.105).aspx