none
Trabalhar com Views RRS feed

  • 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
    segunda-feira, 30 de janeiro de 2017 13:49

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
    segunda-feira, 30 de janeiro de 2017 16:03
  • 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
    segunda-feira, 30 de janeiro de 2017 14:04

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
    segunda-feira, 30 de janeiro de 2017 14:04
  •  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
    segunda-feira, 30 de janeiro de 2017 16:03
  • Ual! Galera, ficou show!!!! Super esclarecedor, principalmente sua resposta Wesley Neves.

    Muitíssimo obrigado!

    segunda-feira, 30 de janeiro de 2017 16:29
  • Estamos a disposição , precisar e só chamar.

    Wesley Neves

    segunda-feira, 30 de janeiro de 2017 16:59
  • 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
    ----------------------------------------------------------


    segunda-feira, 30 de janeiro de 2017 20:35
  • 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/

    terça-feira, 31 de janeiro de 2017 01:30
  • 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]


    terça-feira, 31 de janeiro de 2017 14:56
  • 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]

    terça-feira, 31 de janeiro de 2017 14:58