Oracle IN Состояние очень медленное - PullRequest
1 голос
/ 04 октября 2010

Я пытаюсь выполнить следующую инструкцию для таблицы, содержащей 10000 строк, но запрос выполняется навсегда.

удалить из таблицы_A, где col1 in («A», «B», «C») и col2 in («K», «L», «M») и col3 in («H», «R», D ')

Пожалуйста, кто-нибудь может помочь!

Спасибо A

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Другая возможная причина зависания базы данных - заполнение места назначения архивного журнала. Запросите представления V $ SESSION_WAIT и V $ SESSION_EVENT, чтобы увидеть, что ожидает ваш сеанс.

1 голос
/ 04 октября 2010

Похоже, что другой сеанс заблокировал одну из строк, которую вы хотите удалить.

Кто-то еще работает над той же таблицей (с транзакциями, которые длятся более нескольких секунд)?Или у вас открыт другой инструмент или сеанс, в котором вы не зафиксировали свои изменения?

Обновление :

Еще одна проблема - внешние ключи, которые неправильно проиндексированыЕсли у других таблиц есть внешний ключ к таблице, из которой вы хотите удалить строки, и если столбец внешнего ключа в этих таблицах не проиндексирован, Oracle попытается заблокировать эти таблицы.Это может быть причиной.Если это так, проиндексируйте эти столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...