У меня есть курсор в моем пакете, который использует удаленные ссылки БД. Я хочу оптимизировать производительность пакета. Итак, я хотел начать с оптимизации курсора.Как оптимизировать сложный распределенный запрос?
Я дам некоторую информацию для анализа,
- Там нет локальных таблиц в запросе только удаленной БД ссылки.
- Запрос курсора использует 6 удаленных связей БД и выполняет операции объединения .
- Все DBlinks указывают на ту же БД, но на разные таблицы.
- SELECT, не имеет каких-либо агрегированных операций и имеет только функции NVL для нескольких столбцов
- Около 90 Столбцы выбирают
Структура запроса является
SELECT (SOME 90 COLUMNS)
FROM [email protected]_one m1,
[email protected]_one m2,
[email protected]_one pa,
[email protected]_one pb,
[email protected]_one pc,
[email protected]_one xa,
(SELECT
geo.country,
geo.state
FROM [email protected]_one geo) geo WHERE (m1.master_key = m2.master_key) AND
(pc.weather_key = m2.cloud_key) AND
(m1.order_type_id = pa.weather_key) AND
(pa.weather_key = pb.weather_key) AND
(m2.food_store_key = xa.food_store_key) AND
((nvl(m2.shop_key ,121)) = xa.store_key) AND
(geo.country (+) = m1.country) AND
(xa.food_type NOT IN ('COLD')) AND
(m2.food_type_code NOT IN ('WINTER')
OR m2.price_per_portion !=0) AND
((m1.last_purchase_date >= TRUNC(SYSDATE-10) - 1/48 And m1.last_purchase_date <= TRUNC(SYSDATE))
Or (m2.last_purchase_date >= TRUNC(SYSDATE-10) - 1/48 And m2.last_purchase_date <= TRUNC(SYSDATE)));
Это не фактический запрос, но структура аналогична.
Пожалуйста отправьте запрос! –
Почему у вас есть 4 отдельные ссылки на базы данных, которые все подключаются к одной базе данных? Вы имеете в виду, что у вас есть 4 удаленных объекта, на которые каждый ссылается, используя одну ссылку базы данных? Можете ли вы коснуться удаленных систем? Есть ли какая-либо надежда на повторную передачу данных в вашу локальную систему до ее обработки. –
@JustinCave Извините. Произошла ошибка ... все шесть подключены к одной базе данных. Сейчас я отредактирую вопрос. –