Usuário com melhor resposta
Trabalhar com Views

Pergunta
-
Olá pessoal,
Gostaria de saber se trabalhar com views é uma boa prática e em quais casos posso utilizá-la? Ela consome muito recurso do banco ou servidor de banco? Quais cuidados devo ter com isso?
Outra coisa, tenho 3 views que montam as três partes de um histórico: Dados do Aluno, Dados do Curso do Aluno e Notas dos Alunos. Existe algum problema eu utilizar essas views para outros fins? Por exemplo, fazer uma soma de Carga Horária, utilizar como subselect para extrair uma determinada informação, etc.
Grato,
Ilano
- Editado ilanocf segunda-feira, 30 de janeiro de 2017 13:50
Respostas
-
Com Views
1)você pode apresentar o conteúdo de uma ou mais tabelas de dados .
2)você pode encapsular lógica complexa, como associações e filtros, para reutilização.
3)No SQL Server, você pode usar Views para armazenar e reutilizar consultas no banco de dados.
4)As Views servem Para quase todos os propósitos como tabelas: Você pode fazer SELECT ,Update,Delete
5)Você pode adicionar novas colunas à Views, criando novas colunas na instrução SELECT,
6)Você pode impedir que os usuários vejam algumas colunas de uma tabela removendo as colunas da instrução SELECT
Restrições
Não é possível adicionar um ORDER BY à instrução SELECT em uma View.
Exeto se o select possuir um TOP.
Não é possível transmitir parâmetros para Views.
Da mesma forma, uma Views não pode fazer referência a uma variável dentro da instrução SELECT.
Veja que Views não pode criar uma tabela, seja permanente ou temporária.
Você Não pode usar a sintaxe SELECT / INTO em uma Views.
Uma Views pode referenciar apenas tabelas permanentes;
Uma Views não pode fazer referência a uma tabela temporária.Em resumo , temos pontos bons , como a reutilização de querys , e o encapsulamento de regras complexas,
e como ponto negativo eu ressalto que vc não pode passar parâmetros para ela.
Documentação :
https://msdn.microsoft.com/pt-BR/library/ms187956.aspx
Na minha opinião ,gosto muito das TVF , que fazem o papel das VIEWS , e recebe parâmetros
Documentação :
https://technet.microsoft.com/en-us/library/ms191165(v=sql.105).aspx
Saudações,,,
Por favor, marque-o como respondidas se está respondeu a sua pergunta
ou marcá-lo como útil se está ajudou a resolver o seu problema
Wesley Neves
MTA-Database Fundamentals
Analista Desenvolvedor.NET
Wesley Neves
- Sugerido como Resposta William John Adam Trindade segunda-feira, 30 de janeiro de 2017 16:09
- Marcado como Resposta ilanocf segunda-feira, 30 de janeiro de 2017 16:29
-
View é uma consulta. Ela nao consome "espaço" de dados. É só uma representaçao dos seus dados.
Eu diria que é uma boa pratica desde que voce tome cuidado com o uso em cascata, ou seja, uma view que usa outra view que por sua vez usa outra view. Cada vez que voce acessa uma view ela tem que ser o processada e isso pode ocasionar em lentidao.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta ilanocf segunda-feira, 30 de janeiro de 2017 16:30
Todas as Respostas
-
View é uma consulta. Ela nao consome "espaço" de dados. É só uma representaçao dos seus dados.
Eu diria que é uma boa pratica desde que voce tome cuidado com o uso em cascata, ou seja, uma view que usa outra view que por sua vez usa outra view. Cada vez que voce acessa uma view ela tem que ser o processada e isso pode ocasionar em lentidao.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta ilanocf segunda-feira, 30 de janeiro de 2017 16:30
-
Com Views
1)você pode apresentar o conteúdo de uma ou mais tabelas de dados .
2)você pode encapsular lógica complexa, como associações e filtros, para reutilização.
3)No SQL Server, você pode usar Views para armazenar e reutilizar consultas no banco de dados.
4)As Views servem Para quase todos os propósitos como tabelas: Você pode fazer SELECT ,Update,Delete
5)Você pode adicionar novas colunas à Views, criando novas colunas na instrução SELECT,
6)Você pode impedir que os usuários vejam algumas colunas de uma tabela removendo as colunas da instrução SELECT
Restrições
Não é possível adicionar um ORDER BY à instrução SELECT em uma View.
Exeto se o select possuir um TOP.
Não é possível transmitir parâmetros para Views.
Da mesma forma, uma Views não pode fazer referência a uma variável dentro da instrução SELECT.
Veja que Views não pode criar uma tabela, seja permanente ou temporária.
Você Não pode usar a sintaxe SELECT / INTO em uma Views.
Uma Views pode referenciar apenas tabelas permanentes;
Uma Views não pode fazer referência a uma tabela temporária.Em resumo , temos pontos bons , como a reutilização de querys , e o encapsulamento de regras complexas,
e como ponto negativo eu ressalto que vc não pode passar parâmetros para ela.
Documentação :
https://msdn.microsoft.com/pt-BR/library/ms187956.aspx
Na minha opinião ,gosto muito das TVF , que fazem o papel das VIEWS , e recebe parâmetros
Documentação :
https://technet.microsoft.com/en-us/library/ms191165(v=sql.105).aspx
Saudações,,,
Por favor, marque-o como respondidas se está respondeu a sua pergunta
ou marcá-lo como útil se está ajudou a resolver o seu problema
Wesley Neves
MTA-Database Fundamentals
Analista Desenvolvedor.NET
Wesley Neves
- Sugerido como Resposta William John Adam Trindade segunda-feira, 30 de janeiro de 2017 16:09
- Marcado como Resposta ilanocf segunda-feira, 30 de janeiro de 2017 16:29
-
-
-
Vivendo e aprendendo.. Eu nao sabia que no SQL Server havia essa possibilidade de criar views materiailizadas. O unico banco com o qual eu trabalhei (que eu pensava que era o unico à ter isso) era o Oracle.
Isso existe depois de qual versao do SQL? 2014?
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade segunda-feira, 30 de janeiro de 2017 20:37
-
Falando do dia a dia...
Minha opinião...
Uma view é útil quando você precisa reutilizar o mesmo código várias vezes. Dessa forma, escreve menos código e se precisar alterar a view, altera em um lugar só.
Mas, porém, entretando, tadavia... já vi muitos casos de view matando a performance de uma query...
O pessoal cria uma view gigante com uns 10 joins e usa em um local onde ele precisava de 1 ou 2 tabelas. Nesse caso, sua view está validando informações a mais de forma desnecessária.
Já tive que transformar queries de views em queries acessando direto a tabela para resolver isso.
Fabrício França Lima MCITP - SQL Server Database Administrator Trabalho com SQL Server desde 2006 Treinamento DBA ONLINE: http://www.fabriciolima.net/blog/cursos-online/treinamento-tarefas-do-dia-a-dia-de-um-dba-online/
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 31 de janeiro de 2017 14:57
-
View é uma consulta. Ela nao consome "espaço" de dados. É só uma representaçao dos seus dados.
Eu diria que é uma boa pratica desde que voce tome cuidado com o uso em cascata, ou seja, uma view que usa outra view que por sua vez usa outra view. Cada vez que voce acessa uma view ela tem que ser o processada e isso pode ocasionar em lentidao.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
Vale ressaltar que uma View somente vai ocupar espaço e impactar em performance se a mesma for uma view indexada, ou seja, se ela possuir um índice vinculado, conhecida como View Materializada.
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP terça-feira, 31 de janeiro de 2017 14:57
-
Falando do dia a dia...
Minha opinião...
Uma view é útil quando você precisa reutilizar o mesmo código várias vezes. Dessa forma, escreve menos código e se precisar alterar a view, altera em um lugar só.
Mas, porém, entretando, tadavia... já vi muitos casos de view matando a performance de uma query...
O pessoal cria uma view gigante com uns 10 joins e usa em um local onde ele precisava de 1 ou 2 tabelas. Nesse caso, sua view está validando informações a mais de forma desnecessária.
Já tive que transformar queries de views em queries acessando direto a tabela para resolver isso.
Fabrício França Lima MCITP - SQL Server Database Administrator Trabalho com SQL Server desde 2006 Treinamento DBA ONLINE: http://www.fabriciolima.net/blog/cursos-online/treinamento-tarefas-do-dia-a-dia-de-um-dba-online/
Fabricio,
Concordo com você, e ai justamente que neste tipo de cenário dependendo do tipo de Join uma CTE pode ser mais elegante e interessante.
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]