Низкая производительность для двух таблиц и просмотров после обновления с 10g до 19c

После обновления базы данных 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"';, и это исправлено из-за плохой производительности.

Что мне делать, чтобы выяснить настоящую причину, по которой двойная таблица и представления работают медленно.

Любая помощь будет оценена по достоинству.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
28
1

Ответы 1

Я не вижу ссылки на двойную таблицу?

Но при любом крупном обновлении оптимизатор претерпевает множество изменений. Для наиболее запросов это должно дать такую ​​же или лучшую производительность, но всегда будет риск регрессии. Ты можешь использовать

select * from dbms_xplan.display_cursor('[sqlid]')

для каждого запроса (получить SQL_ID из V $ SQL), чтобы просмотреть различные планы, а затем принять решение о порядке действий. Одна из приятных вещей, которые теперь у вас есть с 19c, - это SQL Plan Management, так что вы можете заставить оптимизатор продолжать использовать ваш план 10g, сохраняя при этом потенциально лучшие планы с течением времени.

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