Oracle快速大量刪除資料

來源:互聯網
上載者:User

需求:

1、有一張客戶表名為Pers,其主鍵為客戶編碼persnbr;

2、pers表中的7個列有外鍵約束;

2、pers表中有10萬條資料是批量產生的(persnbr>=100000000的資料),現在需要把這10萬條資料刪除以便於重建。

解決方案:

1、直接執行delete from pers where persnbr>=100000000,結果速度超慢。

2、利用TRUNCATE文法:

create table pers_TEMP as select  * from pers where persnbr<100000000;--把小於100000000的記錄備份一下,查詢語句會比較快

truncate  table  pers;--將pers中的資料全部清除,速度很快

insert into pers select * from  pers_TEMP ; --將備份的資料重新插入到pers表中

truncate和delete對比

1、truncate比delete速度快很多,且使用的系統和交易記錄資源少。這是因為truncate通過釋放儲存表資料所用的資料頁來刪除資料,並且只在交易記錄中記錄頁的釋放;而delete語句每次刪除一行,並在交易記錄中為所刪除的每一行記錄一項。

2、truncate是ddl語句,delete是dml語句。和其它ddl語句一樣,truncate將會被隱式提交,所以不能對truncate使用rollback命令;而delete語句每條記錄的刪除都會被記錄在交易記錄中,所以可以被rollback。

3、truncate語句將會把表的索引值重新設定成初始大小,而delete不能。

使用Linux檔案控制代碼恢複誤刪除的Oracle資料檔案 

Oracle重複資料刪除記錄的幾種方式

Oracle比較快的重複資料刪除資料的方式

Oracle資料庫刪除資料Delete語句和Truncate語句的對比

Oracle用delete命令刪除資料恢複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.