鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ 當(dāng)表有索引的時(shí)候,delete from全表刪除時(shí),會(huì)刪除索引嗎?

當(dāng)表有索引的時(shí)候,delete from全表刪除時(shí),會(huì)刪除索引嗎?

當(dāng)表有索引的時(shí)候,delete from全表刪除時(shí),會(huì)刪除索引嗎?

我對(duì)一個(gè)幾百萬(wàn)行數(shù)據(jù)的表,進(jìn)行delete from全表刪除后,再分批插入幾百萬(wàn)行數(shù)據(jù),發(fā)現(xiàn)很慢,要四五個(gè)小時(shí)以上

而truncate的話,則很快,10分鐘左右

為何?

回答
編輯回答
毀與悔

delete屬于DML操作,個(gè)人理解是逐條刪除記錄,同時(shí)會(huì)更新索引(注意不是刪除索引,全表刪除操作后索引本身還是存在的)
truncate屬于DDL操作,應(yīng)該是直接更新了數(shù)據(jù)庫(kù)的元數(shù)據(jù),不需要每條刪除,所以速度較快。

PS: 大批量插入數(shù)據(jù),為提升速度一般會(huì)禁用所以的索引,等插入數(shù)據(jù)后再重建索引,如果想更快的話建議用sqlldr導(dǎo)入。

2018年9月20日 21:56
編輯回答
妖妖

刪除列就會(huì)把索引刪除.
刪除表也會(huì)刪除.

2018年9月11日 02:07