"Очистить" = "удалить" = "удалить", я полагаю.
У вас есть несколько вариантов; Вот некоторые из них:
Разделена ли таблица? Я думаю, нет; в противном случае вам понадобятся truncate
(или drop
) разделы, которые вам больше не нужны, и это будет fast
- Вы можете разделить его сейчас?
Другой вариант - буквально delete
этих строк. Это создаст большую отмену .
- эта опция, вероятно, довольно медленная
Или используйте CTAS (Создать таблицу как выбор) и создайте новую таблицу со строками, которые вы хотите сохранить; затем обрежьте (или, если вы можете себе это позволить, удалите) исходную таблицу и переместите строки назад (или, если вы удалили ее, переименуйте вновь созданную таблицу в старое, оригинальное имя). В зависимости от ограничений внешнего ключа это может быть не так просто.
- этот занимает дополнительное место на диске. У тебя это есть? А как насчет ограничений?
Или удалите строки в chunks , используя цикл в процедуре PL / SQL. Чтобы сэкономить место для отмены, сделайте коммит внутри цикла (хотя и не слишком часто). ORA-01555 ( снимок слишком старый ) может появиться
- удаление по частям - это нормально, если вас не беспокоит «все или ничего». Что делать, если удалить не удалось? Повлияет ли это на что-нибудь еще? Как?
Какой из них лучший ? Это вопрос миллиона долларов , и у меня нет ответа на него. Если возможно, импортируйте эту таблицу в свою среду тестирования и ... ну, test эти параметры. Тестирование в производстве не рекомендуется, верно?