(Обратите внимание, что я работаю на Sybase в SQL Anywhere Engineering, и мой ответ основан на моих знаниях о том, как реализовано truncate
, но я думаю, что в Oracle это тоже похоже.)
Я не верю, что таблица на самом деле отброшена и воссоздана;содержимое просто выбрасывается.Это намного быстрее, чем delete from <table>
, потому что не нужно выполнять триггеры, и вместо того, чтобы удалять строку за раз (как из таблицы, так и из индексов), сервер может просто выбросить все страниц, которыесодержат строки для этой таблицы и любые индексы.