После обновления базы данных Oracle с 10g до 19c у меня возникла проблема с производительностью в виде запросов в двойной таблице и представлений в большой базе данных при использовании оператора update / insert. Мне пришлось ждать больше часа при сравнении производительности представлений в базе данных Oracle 10g.
--use Views
update table1
set break_show ='Y'
where developer in (select developer_dis from view1 where rn1 <=10 or rn2 <=10);
--use Table
update table1
set break_show ='Y'
where developer in (select developer_dis from table2 where rn1 <=10 or rn2 <=10);
Мне пришлось установить EXECUTE IMMEDIATE 'alter session set optimizer_features_enable = "10.2.0.4"';, и это исправлено из-за плохой производительности.
Что мне делать, чтобы выяснить настоящую причину, по которой двойная таблица и представления работают медленно.
Любая помощь будет оценена по достоинству.


Я не вижу ссылки на двойную таблицу?
Но при любом крупном обновлении оптимизатор претерпевает множество изменений. Для наиболее запросов это должно дать такую же или лучшую производительность, но всегда будет риск регрессии. Ты можешь использовать
select * from dbms_xplan.display_cursor('[sqlid]')
для каждого запроса (получить SQL_ID из V $ SQL), чтобы просмотреть различные планы, а затем принять решение о порядке действий. Одна из приятных вещей, которые теперь у вас есть с 19c, - это SQL Plan Management, так что вы можете заставить оптимизатор продолжать использовать ваш план 10g, сохраняя при этом потенциально лучшие планы с течением времени.