Pergunta

Se eu tiver um banco de dados MS Access com tabelas vinculadas a partir de dois servidores de banco de dados diferentes (digamos uma tabela a partir de uma db SQL Server e um de um db Oracle) e eu escrever uma consulta que une essas duas tabelas, como é que Access (ou o motor Jet, eu acho?) lidar com esta consulta? Será que vai emitir alguns SELECTs em cada mesa primeiro a obter os campos Estou me juntando em, figurre quais linhas correspondem, em seguida, emitir mais SELECTs para aquelas linhas?

Foi útil?

Solução

A principal coisa a entender é o seguinte:

Você está fazendo uma pergunta que o Access / Jet pode otimizar antes de enviar o seu pedido para os dois bancos de dados do servidor? Se você está se juntando a totalidade de ambas as tabelas, Jet terá que solicitar ambas as tabelas, o que seria feio.

Se, por outro lado, você pode fornecer critérios que um limite ou ambos os lados da junção, Acesso / Jet pode ser mais eficiente e solicitar o conjunto de resultados filtrada em vez da tabela completa.

Outras dicas

Sim, você pode ter alguns problemas de desempenho graves. Eu tenho feito este tipo de coisa há anos. Oracle, SQL e DB2 - ugh. Às vezes eu tive que configurá-lo em um temporizador às 5:00 da manhã, então quando eu entrar em às 7:00 ele é feito.

Se o seu conjunto de dados é significativo o suficiente, muitas vezes é mais rápido para construir uma tabela localmente e, em seguida, vincular os dados. Para conjuntos de dados remotos, também olhar para repasses.

Por exemplo, digamos que você está puxando todos os clientes de ontem do db Oracle e todas as compras dos clientes do db sql. Vamos dizer que você tem uma média de 100 clientes diariamente, mas uma lista de 30.000 e vamos dizer que seus produtos têm uma lista de 500.000. Você pode consultar o db Oracle para a sua lista de 100 clientes, em seguida, escrevê-lo como na declaração IN em uma consulta de passagem à db sql. Você terá seus dados quase que instantaneamente.

Ou se seus registros são enormes, criar tabelas locais das duas IDs, compará-los localmente e, em seguida, basta puxar os jogos necessários.

É feio, mas você pode salvar horas literalmente.

Isso seria o meu palpite. Ela ajuda se existem índices em ambos os lados do participar, mas, como nem servidor tem total controle sobre a consulta, além de otimização de consulta não é possível.

Eu não tenho nenhuma experiência prática associação de tabelas a partir de dois sistemas de dados diferentes. No entanto, dependendo dos requisitos, etc, etc, você pode encontrá-lo mais rápido para executar consultas SELECT com apenas os registros e campos necessários para tabelas do Access e fazer aderir ao final e consulta no Access.

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