Присоединиться к связанному серверу или присоединиться к хост-серверу? - PullRequest
2 голосов
/ 18 декабря 2008

Вот ситуация: у нас есть база данных Oracle, к которой мы должны подключиться, чтобы получить некоторые данные. Поскольку получение доступа к указанной базе данных Oracle представляет собой реальную проблему (в основном бюрократическое препятствие больше всего на свете), мы просто планируем связать ее с нашим SQL Server и использовать эту ссылку для доступа к данным по мере необходимости.

Для одного из наших приложений мы планируем получить данные, которые нам нужны. Теперь нужные нам данные объединены из двух таблиц. Если мы сделаем это, что было бы предпочтительнее?

Это (в псевдо-SQL, если такая вещь существует):

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

или это:

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

Есть ли причина предпочитать одно другому? Следует помнить одну вещь: мы ограничены в том, как долго может выполняться запрос для доступа к серверу Oracle.

Ответы [ 3 ]

3 голосов
/ 18 декабря 2008

Я бы выбрал ваш первый вариант, особенно если ваш запрос содержит предложение where для выбора подмножества данных в таблицах.

Это потребует меньше работы на обоих серверах, при условии, что в таблицах на сервере Oracle есть индексы, поддерживающие операцию соединения.

2 голосов
/ 18 декабря 2008

То, что сказал Хамишман, применимо.

Также , SQL Server на самом деле ничего не знает об индексах, статистике или кэше, которые хранятся на сервере Oracle. Поэтому сервер oracle, вероятно, может выполнять с объединением гораздо более эффективную работу, чем сервер sql.

2 голосов
/ 18 декабря 2008

Если внутреннее объединение значительно уменьшает общее количество строк, то вариант 1 приведет к гораздо меньшему сетевому трафику (поскольку вам не нужно будет проходить по всем ссылкам db по всем ссылкам таблицы table1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...