Почему удаление в Oracle занимает больше времени, чем выбор в случае 0 строк?

Я выполняю простой запрос:

 select * from tableA where fk in (select pk from tableB where column='somevalue')

Он возвращает 0 строк и занимает около 20 секунд Но когда я бегу:

 delete from tableA where fk in (select pk from tableB where column='somevalue')

Это займет время около 3 минут и вызывает ошибку: не может продлить темп-сегмент! Но это абсурд: delete query ничего не удаляет! Как это решить?

1
nl ja de
укажите псевдоним таблиц, а затем префикс любого столбца соответствующего псевдонима.
добавлено автор Florin Ghita, источник
sub select может вернуть около 10 миллионов записей
добавлено автор user710818, источник
префикс не помогает
добавлено автор user710818, источник
нет триггеров, никаких ограничений внешнего ключа для индексированных столбцов. Только одна догадка - может быть, проблема в небольшом временном сегменте - 512 Мб?
добавлено автор user710818, источник
Опубликуйте план объяснения. Возможно, оптимизатор использует другой план для выполнения подзапроса в каждом случае; возможно, DELETE сначала пытается сначала выполнить подзапрос на tableB и материализовать его в памяти, прежде чем он обратится к таблицеA.
добавлено автор Jeffrey Kemp, источник
Сколько строк возвращает ваш sub select ( select count (*) from tableB, где column = 'somevalue' )?
добавлено автор Andreas Fester, источник
Честно говоря, мне трудно поверить - вы на 100% уверены, что это точные запросы, которые вы использовали? Кто-то изменил данные таблицыA/tableB между вашими запросами?
добавлено автор Frank Schmitt, источник
Возможно, у вас есть ограничения FK для индексированных столбцов?
добавлено автор Alen Oblak, источник
Есть ли при удалении триггер в tableA ?
добавлено автор Chris Saxon, источник
Пожалуйста, опубликуйте планы объяснений обоих заявлений
добавлено автор Chris Saxon, источник
Oracle RU
Oracle RU
303 участник(ов)

Русскоязычная группа по Oracle. — Архитектура СУБД — PL/SQL — Оптимизация — Администрирование — Вакансии Oracle (указать инфу по вилке ЗП и удалёнке) Приглашайте коллег :-) Запрещены: личные оскорбления, обсуждения оффтопик вопросов политики и религии