Oracle truncate和delete的區別

2022-09-01 16:15:17 字數 490 閱讀 9741

首先truncate是ddl語句,而delete是dml語句。

truncate的刪除比delete快很多,尤其是表資料量大的時候,原因是truncate執行過程中不產生undo,所以truncate也無法再回滾。而delete在commit之前肯定是可以回滾的。

truncate的另乙個特性是會將表的高水位線重新歸零,delete不會這樣做,這也是truncate的乙個優點,全表掃瞄僅搜尋位於高水位線之下的儲存塊中的資料行。這對於全表掃瞄效能具有很大影響。

truncate有乙個***,如果一張表定義了主鍵,並且這個主鍵是其子表的外來鍵,那麼不能truncate這張表,即使子表沒有任何資料。這種情況下試圖去truncate會報:oar-02266。原因是truncate無法回滾,防止有人併發往子表插入資料。而delete是允許這樣做的,因為delete會生成重做資訊,具有讀一致性,並且能夠回滾。

最後還有一種刪除全表資料的方式:drop表並且重建,這種情況一般不會在生產環境做,多用於開發測試階段。

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...

rpx和樣式和class和flex

5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...

if和switch和for語句

if和switch很像。具體什麼場景下,應用那個語句呢?如果判斷的具體數值不多,而是符合byte,short,int,char,字串。這五種型別。雖然兩個語句都可以使用,建議使用switch語句,因為效率稍高。其他情況,對區間判斷,對結果為boolean型別判斷,使用if,if的使用範圍更廣。whi...