Присоединиться к связанному серверу или присоединиться к хост-серверу?

Вот ситуация: у нас есть база данных 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.

это ограничение по времени, которое заставляет вас не идти к варианту 1, который, я думаю, был бы очевидным предпочтительным вариантом

terjetyl 18.12.2008 17:26

Что ж ... вы когда-нибудь замечали, что вопросы кажутся намного более очевидными, когда вы их записываете, чем когда вы думаете о них? :-)

Jason Baker 21.12.2008 18:27
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
2
2 009
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

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

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

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

Другие вопросы по теме