Desculpe pela longa pergunta, mas deixe-me dar-lhe o meu cenário. Eu tenho um banco de dados que armazena dados exportados de outro banco de dados. As tabelas contidas são cópias do outro banco de dados (não SQL). Cada nome de coluna nessas tabelas de exportação é nomeado usando o seguinte padrão:
UserFriendlyName_OriginalColumnName
Como nossos usuários estão interessados principalmente na parte UserFriendlyName da coluna, criamos uma View para cada tabela, onde o nome de cada campo é estritamente a parte UserFriendlyName do nome da coluna.
A maioria dessas visualizações são estritamente consultas de uma tabela de dados. Para algumas dessas exibições, no entanto, vinculo a uma outra tabela de dados para extrair um ou dois campos de descrição. Observe que isso nunca é mais do que uma tabela vinculada.
Em termos de desempenho, qual método é melhor? Se eu estiver vinculando uma tabela de dados a outra para um campo de descrição, posso vincular diretamente à visualização das tabelas de descrição para não precisar criar um alias para a coluna? É significativamente melhor usar duas tabelas de dados na exibição e alias cada coluna das tabelas pai?
Isso pode parecer um pouco arbitrário, mas esse projeto de exportação de dados está ficando cada vez maior. Gostaria de formalizar meu processo de como vincular minhas informações. O objetivo é usar estritamente as exibições de dados, se e quando possível. No entanto, se isso adicionar uma quantidade considerável de degradação de desempenho, prefiro sempre usar tabelas de dados em todas as minhas exibições de dados.
Posso estar interpretando mal sua pergunta. Você está perguntando se recebeu as seguintes tabelas e exibições:
Será isso:
desempenho comparável a:
Se for essa a pergunta, a resposta é sim, o desempenho será idêntico.
No SQL2000, o otimizador às vezes lutava com visualizações complexas profundamente aninhadas que se juntavam umas às outras, mas não com cenários simples como este. Não encontrei tanto o problema em 2005+.