/ / Partecipa al server collegato o partecipa al server host? - sql, sql-server-2005, oracle, join, server collegato

Partecipa al server collegato o partecipa al server host? - sql, sql-server-2005, oracle, join, server collegato

Ecco la situazione: abbiamo un database Oracle a cui dobbiamo connetterci per estrarre alcuni dati. Dal momento che ottenere l'accesso a detto database Oracle è un vero e proprio dolore (principalmente un ostacolo burocratico più che altro), stiamo solo progettando di collegarlo al nostro SQL Server e utilizzare il link per accedere ai dati quando ne abbiamo bisogno.

Per una delle nostre applicazioni, stiamo progettando di fare una vista per ottenere i dati di cui abbiamo bisogno.Ora i dati di cui abbiamo bisogno sono uniti da due tabelle.Se lo facciamo, quale sarebbe preferibile?

Questo (in pseudo-SQL se esiste una cosa del genere):

 OPENQUERY(Oracle, "SELECT [cols] FROM table1 INNER JOIN table2")

o questo:

 SELECT [cols] FROM OPENQUERY(Oracle, "SELECT [cols1] FROM table1")
INNER JOIN OPENQUERY(Oracle, "SELECT [cols2] from table2")

C'è qualche motivo per preferire uno rispetto all'altro? Una cosa da tenere a mente: siamo limitati a quanto tempo la query può essere eseguita per accedere al server Oracle.

risposte:

2 per risposta № 1

Se l'inner join riduce significativamente il numero totale di righe, l'opzione 1 risulterà in un traffico di rete molto inferiore (poiché non avrai tutte le righe di table1 che devono attraversare il link db


3 per risposta № 2

Vado con la tua prima opzione soprattutto se la tua query contiene una clausola where per selezionare un sottoinsieme dei dati nelle tabelle.

Richiederà meno lavoro su entrambi i server, supponendo che ci siano indici sulle tabelle nel server Oracle che supportano l'operazione di join.


2 per risposta № 3

Ciò che Hamishmcn ha detto vale.

Anche, SQL Server non ne sa davvero nullagli indici o le statistiche o la cache conservati dal server Oracle. Pertanto, il server Oracle può probabilmente eseguire un lavoro molto più efficiente con il join rispetto a quello del server sql.