быть осторожным, усекать и удалять - это совершенно отдельные операторы SQL:
- delete - DML, а truncate - DDL, что означает, что удаление можно откатить, а truncate нельзя откатить
- Удалить должен найти каждую строку один за другим. усечь мгновенно
- удаление использует журналы отмены, а усечение не
если сложить все вместе:
1 / если вы хотите, чтобы он был с возможностью отката, вы не хотите использовать усечение
2 / если вы используете delete, учитывая размер таблицы, которую вы хотите очистить:
- если стол маленький, вы не увидите никакой разницы
- если таблица среднего размера, вы будете испытывать плохую производительность
- если таблица большая, вам не хватит места в табличном пространстве отмены, и вы не сможете ничего очистить
так что будьте осторожны с тем, какое утверждение вы действительно хотите использовать.
о том, как усекать таблицу с помощью hql, следует запретить запуск DDL (усечение, создание таблицы, удаление таблицы и т. Д.) Из приложения и из него. Вы должны использовать удалить. Но если стол большой, он тоже не будет работать.
Вот почему очистка таблицы в приложении - плохая идея.
Если вы хотите выполнить некоторую очистку, часто лучше запускать truncate внутри сценария sql раз в ночь.
Обратите внимание, что я не знаю специфику вашего приложения и что оно говорит только в общем