Удалить SQL-скрипты занимают очень много времени и даже вешают навсегда в Oracle 12c. У нас есть сотни скриптов для удаления, как показано ниже, и даже пытались запустить его с помощью параллельной работы/* + PARALLEL (a, 4) * /, но не повезло в улучшении производительности.Удалить SQL - Принимать навсегда
- Есть ли способ настроить скрипты удаления.
- Можем ли мы использовать PL/SQL для цикла, чтобы улучшить производительность?
- Если да, то, пожалуйста, поделитесь своими мыслями и советами.
Некоторые примеры сценарии SQL:
DELETE
FROM
E_PROJ_DETAIL
WHERE
CATEGORY_ID in (SELECT PRIMARY_KEY FROM Y_OBJ_CATEGORY WHERE TREE_POSITION='VEN$_MADD');
COMMIT;
delete
from
e_proj_group_access
where enterprise_object_id in (select primary_key from t_project where application_id in (select application_id from y_object_definition where unique_code ='VEN$_MADD'));
commit;
Сколько строк в y_obj_category, как человек в e_proj_detail? имеет ли category_id индекс? и т. д. Что вы должны сделать, так это посмотреть на план выполнения. – Hogan
Трудно ответить без подробных подробностей (которые вы, вероятно, не можете предоставить). Мои непосредственные мысли: 1) есть проблемы с индексами, 2) кто-то реализовал триггер где-то, что замедляет работу. – Paulb
В связи с догадками @ Paulb будет вопрос о том, есть ли необъявленные внешние ключи (это тип проблемы с индексом, но тот, который я вызывал отдельно). –