У меня есть таблица базы данных, которая имеет> 14 миллионов строк.Удалить на партию
Если я пытаюсь выполнить:
delete from table
соединение болтается.
Как удалить все строки в «партиях», чтобы они были удалены в конце концов?
У меня есть таблица базы данных, которая имеет> 14 миллионов строк.Удалить на партию
Если я пытаюсь выполнить:
delete from table
соединение болтается.
Как удалить все строки в «партиях», чтобы они были удалены в конце концов?
Попробуйте:
truncate table tblname
Это имеет то преимущество, не будучи в состоянии отката, поэтому не придется регистрироваться свои действия, а также не срабатывают триггеры. Это делает его значительно быстрее, чем эквивалент delete from tblname
.
В противном случае вы можете выработать подмножества для удаления на основе данных таблицы. Например, если есть поле (надеюсь индексируется), содержащие фамилии:
delete from tblname where lastname like 'A%'
Обратите внимание, что это всего лишь пример. Вы также можете использовать такие вещи, как
и так далее. То, что вы выбираете, целиком зависит от таблицы, которую вы пытаетесь удалить.
Я предпочитаю команду truncate
из-за ее простоты.
удаляет операции, которые могут быть отброшены назад, следовательно, они могут быть довольно медленными. Если вы можете обрезать или бросить и воссоздать таблицу, это ваш лучший выбор. Кроме того, вы можете execute this sql.
BEGIN
loop
delete from table where rownum < 500
exit when SQL%rowcount < 499
end loop;
END
Nope .. что он делает? Удаляет ли он все без транзакции или чего-то еще? – OscarRyz
Ну, эмм, я уже знал это, ты знаешь, я просто хотел сделать «вопрос о проблеме с угрозой» из FAQ * Это также прекрасно, чтобы спросить и ответить на свой собственный вопрос, но притворяйся, что находишься под угрозой: форма вопроса. * je je je Спасибо paxdiablo – OscarRyz
А? Вы разговариваете сами с собой? – ceejayoz