Pergunta

Temos um banco de dados entregue ao fornecedor que, até este ponto, pude evitar fazer alterações na estrutura do banco de dados. Em breve estaremos consultando diretamente as tabelas diretamente para um projeto relacionado. Para extrair todos os dados de que precisamos, precisaremos criar uma grande instrução SQL com vários sindicatos.

select ... from table1
union
select ... from table2
...
select ... from tableN

A velocidade é a maior prioridade para este projeto. Seria mais rápido criar uma visão para fazer as junções e, em seguida, apenas consultar essa visualização (e, assim, fazer alterações no banco de dados do fornecedor) ou apenas executar a declaração da união de nossa aplicação?

Conheço os possíveis problemas envolvidos em fazer alterações no banco de dados do fornecedor, por isso estou procurando feedback.

Foi útil?

Solução

Quando se trata de bancos de dados de fornecedores, eu ficaria muito hesitante em fazer alterações em quaisquer tabelas existentes. Adicionar algo como uma visão parece um pouco mais seguro, pois você é o único que a usará. Minha maior preocupação com a visão seria se você recebesse uma atualização do seu fornecedor que fez alterações no seu banco de dados e você pode perder a visão.

Eu não acho que você veria ganhos de desempenho ao usar a visualização, a menos que você tenha usado uma visualização indexada. Infelizmente, você não pode criar índices em uma visualização criada usando um sindicato (pelo menos no SQL Server).

Pessoalmente, quando se trata de colocar a lógica no aplicativo versus colocá -lo no banco de dados, eu me inclino para o banco de dados. Na minha experiência, esses tipos de alterações são mais fáceis de implantar e manter.

Se eu estivesse em sua situação, iria em frente, criaria a visão se isso facilitaria sua vida. Mas, novamente, não espere ganhos de desempenho.

Outras dicas

Não será uma visualização não será mais rápida (exceto o tempo de desenvolvimento).

O que seria mais rápido é usar tudo da União se funcionar. A União procura registros duplicados e os remove do resultado final. Se você conhece os registros por design (como cada tabela, é para uma clínica diferente ou cada tabela possui um intervalo de data diferente) não pode ser duplicado, a união não tenta distinto o conjunto de resultados e, portanto, funciona muito mais rapidamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top