Versões posteriores do SQL (2005+) parecem melhores em otimizar o uso de visualizações. As visualizações são melhores para consolidar regras de negócios. EG: onde trabalho, temos um banco de dados de produtos de telecomunicações. Cada produto é atribuído a um plano de taxa e esse plano de taxa pode ser trocado e as taxas no plano de taxa podem ser ativadas / desativadas à medida que as taxas são aumentadas ou modificadas.
Para facilitar, podemos criar visualizações aninhadas. A primeira visualização une os planos de taxa a suas taxas usando as tabelas necessárias e, retornando os dados necessários, os próximos níveis de visualizações precisariam. A segunda visualização pode isolar apenas os planos de taxas ativos e suas taxas ativas. Ou apenas taxas de clientes. Ou taxas de funcionários (para desconto de funcionários). Ou taxas de clientes comerciais vs. residenciais. (os planos de taxas podem ficar complicados). O ponto é que a visão básica garante que nossa lógica geral de negócios para planos de taxas e taxas sejam unidas adequadamente em um local. A próxima camada de visualizações nos concentra mais em planos de taxas específicos (tipos, ativo / inativo, etc.).
Concordo que as visualizações podem tornar a depuração confusa se você estiver criando consultas e visualizações ao mesmo tempo. Mas, se você estiver usando uma exibição tentou-n-confiável, isso facilita a depuração. Você sabe que a visualização já passou pela campainha e, portanto, provavelmente não está causando o problema.
Problemas podem surgir com seus pontos de vista. "e se um produto estiver associado apenas a um plano de taxas inativo?" ou "e se um plano de taxas tiver apenas taxas inativas?" Bem, isso pode ser pego no nível de front-end com uma lógica que captura erros do usuário. "Erro, o produto está em um plano de taxas inativo ... corrija". Também podemos executar auditorias de consulta para verificar novamente antes da execução do faturamento. (selecione todos os planos e junte-se à visualização da tabela de taxas ativa, retorne apenas os planos que não obtêm uma tabela de taxas ativa como problemas que precisam ser resolvidos).
O bom disso é que as visualizações permitem condensar bastante as consultas de relatórios, cobrança etc. Você pode ter uma visão da conta do cliente e, em seguida, uma visão do segundo nível apenas de clientes ativos. Equipe isso com uma visão do endereço do cliente. Equipe isso com uma visão do (s) produto (s) (associado ao (s) produto (s) que o cliente possui). Equipe isso para visualizar o plano de taxa de produtos. Equipe isso com visão dos recursos do produto. Visualize, visualize, visualize, cada tentativa e erro para garantir a integridade. Sua consulta final usando as visualizações é muito compacta.
editar:
Como um exemplo de como a visualização teria sido melhor do que apenas uma consulta simples de tabelas ... tivemos um contratado temporário para fazer algumas alterações. Eles disseram que havia pontos de vista sobre as coisas, mas ele decidiu aplanar todas as suas perguntas. O faturamento estava impedindo algumas de suas consultas. Eles continuavam recebendo vários planos de taxas e taxas. Acontece que suas consultas não apresentavam critérios para permitir a cobrança de taxas apenas se estivessem entre as datas de início e término em que o plano de taxas deveria usar essas taxas durante essas datas. Opa Se ele tivesse usado a visão, ela já teria levado essa lógica em consideração.
Basicamente, você deve avaliar o desempenho versus a sanidade. Talvez você possa fazer todos os tipos de coisas sofisticadas para aumentar o desempenho de um banco de dados. Mas, se isso significa que é um pesadelo para uma nova pessoa assumir / manter, vale a pena? Realmente vale a pena o cara novo ter que jogar whack-a-mole, ter que encontrar todas as perguntas que precisam para mudar sua lógica (e arriscar que ele as esqueça / mexa com elas) porque alguém decidiu que as vistas são "ruins" e não consolidou alguma lógica de negócios principal em uma que pudesse ser usada em centenas de outras consultas? Depende realmente do seu negócio e da sua equipe de TI / IS / DB. Mas prefiro clareza e consolidação de fonte única a desempenho.