1. 程式人生 > >oracle 刪除臨時表以及truncate和delete的區別

oracle 刪除臨時表以及truncate和delete的區別

oracle 刪除臨時表:

1、先truncate table table_name,釋放表儲存空間。

2、再delete table table_name ,刪除臨時表。

下面講一下truncate命令和delete的區別: 1、TRUNCATE在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會被撤銷。 2、TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對TRUNCATE使用ROLLBACK命令。  3、TRUNCATE將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過TRUNCATE操作後的表比DELETE操作後的表要快得多。 
4、TRUNCATE不能觸發任何DELETE觸發器。  5、不能授予任何人清空他人的表的許可權。  6、當表被清空後表和表的索引講重新設定成初始大小,而delete則不能。  7、不能清空父表。 TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE 在預設是 DROP STORAGE 當使用DROP STORAGE時將縮短表和表索引,將表收縮到最小範圍,並重新設定NEXT引數。REUSE STORAGE不會縮短表或者調整NEXT引數在特殊情況下使用 REUSE ST DELETE語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。
TRUNCATE TABLE 則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。 TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。 DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。 TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。
如果想保留標識計數值,請改用 DELETE。 如果要刪除表定義及其資料,請使用 DROP TABLE 語句。