No SQL Server, quando devo usar uma visualização indexada em vez de uma tabela real?

StackOverflow https://stackoverflow.com/questions/3861476

  •  27-09-2019
  •  | 
  •  

Pergunta

Sei no SQL Server, você pode criar índices em uma visualização e a exibição salva os dados da tabela subjacente. Então você pode consultar a vista. Mas, por que eu preciso usar a visualização em vez da tabela?

Foi útil?

Solução

Você pode usar uma visão para simplificar nas consultas. Em nossos projetos, o consenso está usando visualizações para interfaces e, especialmente, "interfaces de relatório".

Imagine que você tem uma tabela de clientes e o gerente deseja um relatório todas as manhãs com o nome do cliente e o saldo da conta (ou qualquer outra coisa). Se você codificar seu relatório contra a tabela, estará criando um forte vínculo entre seu relatório e sua tabela, dificultando as mudanças posteriores.

Por outro lado, se o seu relatório atingir uma visualização, você poderá torcer o banco de dados livremente; Desde que a visualização seja a mesma que o relatório funcione, o gerente ficará feliz e você estará livre para experimentar o banco de dados. Você deseja separar os metadados do cliente da tabela principal do cliente? Vá em frente e junte -se às duas tabelas à vista. Você deseja desnormalizar as informações do carrinho para o cliente? Não tem problema, a visão pode se adaptar ...

Para ser sincero, é a minha opinião como programador, mas outros usos certamente serão encontrados por gurus do db :)

Outras dicas

Uma tabela é onde os dados são fisicamente armazenados.

Uma visão é onde as tabelas estão resumidas ou agrupadas para facilitar o uso de grupos de tabelas.

Uma visualização indexada permite que uma consulta use uma visualização e não precisa obter dados da tabela subjacente, pois a visualização já possui os dados, aumentando o desempenho.

Você não conseguiu alcançar o mesmo resultado apenas com tabelas, sem desnormalizar seu banco de dados e, assim, potencialmente criar outros problemas.

Uma vantagem do uso de uma visualização indexada é solicitar resultados de 2 ou mais colunas, onde as colunas estão em tabelas diferentes. ou seja, tenha uma visualização que é o resultado da Tabela 1 e Tabela 2 classificada pela Tabela1.Column1, Table2.Column2. Você pode então criar um índice na coluna, coluna2 para otimizar essa consulta

Basicamente, use uma visão:

  1. Quando você usa a mesma consulta complexa em muitas tabelas, várias vezes.
  2. Quando o novo sistema precisa ler dados antigos da tabela, mas não assiste para alterar seu esquema percebido.

As visualizações indexadas podem melhorar o desempenho, criando um índice mais específico sem aumentar a redundância.

Uma visualização é simplesmente uma instrução SELECT que recebeu um nome e armazenada em um banco de dados. A principal vantagem de uma visão é que, uma vez criado, ele age como uma tabela para outras instruções selecionadas que você deseja escrever.

A instrução SELECT para a visualização pode referenciar tabelas, outras visualizações e funções.

Você pode criar um índice na visualização (visualização indexada) para melhorar o desempenho. Uma visão indexada é auto-atualizada, refletindo imediatamente as alterações nas tabelas subjacentes.

Se a sua visualização indexada selecionar apenas colunas de uma tabela, você também poderá colocar o índice nessa tabela e consultar essa tabela diretamente, a visualização causaria apenas uma sobrecarga para o seu banco de dados. No entanto, se a sua instrução SELECT cobrir várias tabelas com junções etc., você poderá obter um aumento de desempenho colocando um índice na visualização.

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