Я испытываю бесконечный цикл для удаления. Я пробовал много способов справиться с этой проблемой, но все еще занимал слишком много времени. Я постараюсь быть максимально понятным.
У меня есть 4 таблицы с этой проблемой.
Удаление выполняется в зависимости от указанного pool_id
Table 1 contain the pool_id
Table 2 the ticket_id foreign join ticket_pool_id with the pool_id
Table 3 ticket_child_id foreign join ticket_id with the ticket_id
Table 4 ticket_grand_child_id foreign ticket_child_id join with the ticket_child_id
Concerned count for each
table 1---->1
table 2---->1 200 000
table 3---->6 300 000
table 4---->6 300 000
Так что на самом деле это 6,3M + 6,3M + 1,2M + 1 строка, которую нужно удалить
Вот ограничение:
- Нет разделения
- Oracle версия 9
- Онлайн все время, поэтому нет времени простоя и CTAS
- Мы не можем использовать каскадное ограничение
- Нормализация очень важна
Вот что я попробовал:
- Массовое удаление
- Удалить с оператором (предложение In и Exists)
- временная таблица для каждого уровня и 1 уровень соединения
- процедура и фиксация каждые 20k
Никто из них не работал в достойные сроки, например, менее часа. Тот факт, что мы не можем основывать удаление на одном из значений столбца, не помогает. Есть ли способ?