TRUNCATE TABLE 與 DELETE在刪除整個表的全部記錄時的區別

1.DELETE
 ・DML語言
 ・能夠回退
 ・能夠有條件的刪除
  ・不能觸發任何Delete觸發器
  ・當表被清空後表和表的索引講從新設置成初始大小,而delete則不能。
  ・不能清空父表。

   DELETE FROM 表名 WHERE 條件

2.TRUNCATE TABLE
 ・DDL語言
 ・沒法回退
 ・默認全部的表內容都刪除   
  ・將從新設置高水平線和全部的索引。在對整個表和索引進行徹底瀏覽時,刪除速度比delete快。

   TRUNCATE TABLE 表名

3.Oracle的一些特性數據庫

在oracle裏,使用delete刪除數據之後,數據庫的存儲容量不會減小,並且使用delete刪除某個表的數據之後,查詢這張表的速度和刪除以前同樣,不會發生變化。

由於oralce有一個HWM高水位,它是oracle的一個表使用空間最高水位線。當插入了數據之後,高水位線就會上漲,可是若是你採用delete語句刪除數據的話,數據雖然被刪除了,可是高水位線卻沒有下降,仍是你剛纔刪除數據之前那麼高的水位。除非使用truncate刪除數據。那麼,這條高水位線在平常的增刪操做中只會上漲,不會下跌,因此數據庫容量也只會上升,不會降低。而使用select語句查詢數據時,數據庫會掃描高水位線如下的數據塊,由於高水位線沒有變化,因此掃描的時間不會減小,因此纔會出現使用delete刪除數據之後,查詢的速度仍是和delete之前同樣。oracle

相關文章
相關標籤/搜索