У меня есть этот простой UPDATE заявление:Oracle Update на View экстремально медленно
UPDATE v_my_view mv
SET mv.name =
(SELECT RTRIM(name)
FROM v_another_view av
WHERE av.KEY_ID = mv.KEY_ID)
WHERE mv.VALID = 1;
Это заявление занимает очень долго (20 секунд), в то время как другие, более сложные обновления на ту же точку зрения занимает менее 1 секунды. Сначала я подумал, что это функция RTRIM, но это не так, если я не использую ее, она медленная, как раньше.
SELECTs в обоих представлениях возвращают записи очень быстро.
Существует нет TRIGGER на вид, но есть один на столе позади. Но это не может быть узким местом, поскольку даже когда я прокомментирую весь код TRIGGER, он имеет такую же медленную производительность.
У кого-нибудь есть предложение?
EDIT: добавлено отсутствующее предложение WHERE EDIT: представление (или таблица позади) содержит только 8000 записей, не имеющих специальных типов данных.
Как определяются виды? т.е. DDL как v_my_view, так и v_another_view – toddlermenot
Каков план выполнения? –
@toddlermenot: Представления очень просто выбирают только по одной таблице позади. – flo