Views – Sql Server

O que é uma Views ?

View é um resultado originado de uma consulta pré-definida. Essencialmente é um metadado que mapeia uma query para outra, por isto pode ser considerado como uma tabela virtual. Como o próprio nome diz, ela representa uma visão de dados e não contém dados. Com ela você tem a ilusão que está vendo uma tabela que não existe. Elas não são carregadas, elas são geradas sempre que forem necessárias.

 

Vantagens das Views

Temos muitos motivos e vantagens para usarmos views em nossos projetos. A seguir são citados três que podem fazer a diferença:

  • Reuso: as views são objetos de caráter permanente. Pensando pelo lado produtivo isso é excelente, já que elas podem ser lidas por vários usuários simultaneamente.
  • Segurança: as views permitem que ocultemos determinadas colunas de uma tabela. Para isso, basta criarmos uma view com as colunas que acharmos necessário que sejam exibidas e as disponibilizarmos para o usuário.
  • Simplificação do código: as views nos permitem criar um código de programação muito mais limpo, na medida em que podem conter um SELECT complexo. Assim, criar views para os programadores a fim de poupá-los do trabalho de criar SELECT’s é uma forma de aumentar a produtividade da equipe de desenvolvimento.

Desavantagens

  • Esconde uma complexidade da query podendo enganar o desenvolvedor quanto à performance necessária para acessar determinada informação. E pode ser pior quando views usam outras views. Em alguns casos você pode estar fazendo consultas desnecessárias sem saber de forma muito intensiva.
  • Cria uma camada extra. mais objetos para administrar. Algumas pessoas consideram isto um aumento de complexidade. Uma outra forma de ver isto é que uma view pode ser mal usada.
  • Pode limitar exageradamente o que o usuário pode acessar impedindo certas tarefas.
  • Se a view for materializada fará com que alterações nas tabelas reais envolvidas sejam mais lentas afinal são mais tabelas para atualizar. Este tipo de view funciona de forma semelhante a um gatilho.

 

Diferença para Stored Procedure

Acho que já começa entrar em outra questão. Mas resumindo uma Stored Procedure permite mais flexibilidade para criar algoritmos mais complexos mas ela não cria uma tabela virtual. Como você vai lidar com isto para expor os dados e chamar uma Sproc é um problema do programador dela ou da query que vai usá-la.

 

Exemplo de uma Views:

CREATE VIEW [dbo].[ADM_VW_Nucleo]
AS

select id_nucleo, nucleo from DBIC03..log_nucleos where dpto_existente = 1

GO

 

Referências:

http://www.devmedia.com.br/conceitos-e-criacao-da-view-views-no-sql-server-parte-1/22390

http://pt.stackoverflow.com/questions/35413/o-que-s%C3%A3o-views-em-sql-quais-vantagens-e-desvantagens-em-utilizar