#oracle #performance #select
#Oracle #Производительность #выберите
Вопрос:
У меня есть запрос по представлению. При первом выполнении время запроса составляет 3 секунды. При втором выполнении запрос не возвращается. Я протестировал этот запрос в другой базе данных, появились те же результаты. Я изменил запрос и использовал подсказку /* INDEX (h xdst_pst_e_index)*/
. В одной из двух баз данных запрос теперь выполняется быстро при каждом выполнении. Но в другом быстр только первое выполнение. Есть еще одно странное поведение:
- Создайте выбор
- выполните его (время выполнения 3 секунды)
- выполните его снова (запрос не возвращается)
- измените выбор (добавьте пробел, я не меняю представление)
- выполните его (время выполнения 3 секунды)
- выполните его снова (запрос не возвращается)
База данных с таким поведением — Oracle 11.2.0.4.0, база данных с быстрым выполнением — 11.2.0.2.0.
Есть идеи? Я перестроил индекс, и статистика обновлена. План объяснения всегда один и тот же.
Комментарии:
1. проверьте вывод
select * from table(dbms_xplan.display_cursor('your_sql_id', null));
. Симптомы типичны для обратной связи по мощности2. Да, пожалуйста, поделитесь планом из обеих баз данных. Вы перестроили индекс и обновили статистику в обеих базах данных?
3. Спасибо за отзыв. Я изменил параметр optimizer_use_feedback в своем сеансе, и оператор выполняется 3 секунды при каждом выполнении. Я подумал о подсказке в моем заявлении для управления этим параметром, но параметр базы данных optimizier_ignore_hints имеет значение true в этой установке. Возможно, я могу изменить эти параметры для всей системы, но я понятия не имею, что происходит с другими операторами. Возможно, этот быстрый, а другие становятся медленными.
4. Рассмотрите возможность создания расширенной статистики