Oracle. Выборка по дблинку | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Всем привет.
Есть необходимость со стороны БД Оракл сделать выборку с соединением нескольких таблиц из внешней БД (MySQL). Правильно ли я понимаю, что по умолчанию запрос будет выполнен на стороне оракл, при этом таблицы будут предварительно выбраны и только после этого проджойнены? Насколько я понимаю, единственным способом управления, на какой стороне будет выполнен запрос является хинт /*+ driving_site */ ? Как проверить на какой стороне реально выполняется запрос? Спасибо. p.s.
Правильно ли я понимаю, что данный план запроса демонстрирует как раз выполнение на стороне Оракл? Исправлено 1 раз(а). Последнее : Pekpytep, 13.03.19 12:57 |
Re: Oracle. Выборка по дблинку | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет, хинт driving_site не единственный способ управления тем где исполнится определённая часть запроса. К примеру факторизованные запросы (WITH ...) с хинтом no_merge, или использование представлений во "внешней" БД может "переносить" часть работы в эту самую внешнюю БД.
Да, в плане операция REMOTE это "пересылка" данных из внешнего истончика в наш инстанс. ------------------ WBR, Igor |
Re: Oracle. Выборка по дблинку | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Да, спасибо, уже более глубоко копнул форумы, более или менее понял что к чему. В официальной документации не удалось ничего найти, как и в доках по mysql-коннектору.
Использование представлений снаружи решило бы проблему, с самого начала пытался продвинуть этот подход, но к сожалению команда коллег на mysql тугая, изо-всех сил сопротивляются и саботирует создание любых объектов для внешних систем. Насколько я понял, заставить запрос выполняться снаружи довольно непростая задача, особенно если есть ряд условий накладывающих ограничения. Например, если в запросе более 1 дблинка, запрос выполнится на стороне оракла. Если в запросе участвует локальная таблица, запрос выполнится на стороне оракла. Если результат нужно вставить в таблицу - результат выполнится на стороне оракла. Т.е. конструкцию вида insert into agg_table select ... from ...remotetable@dblink where not exists(select ... from localtable) уже без полной выборки не получится использовать, видимо придется разбивать задачу на 3 части. Спасибо. |
© 2000-2024 Fox Club  |