關於刪除資料的快慢問題的分析

litterbaby發表於2007-05-31
關於刪除資料的快慢問題的分析[@more@]

關於刪除資料的快慢問題的分析

總結:康標

email

今天在ITPUB上看到一個帖子是關於刪除表中資料的問題,意思是刪除一個表中的資料為什麼行數少的卻消耗時間很長?

http://www.itpub.net/783169.html

其實這個問題應該說是從多個角度分析,也就是有可能多種原因都能夠產生現在的這些現象:

1、索引的多少。

2、表每一行的大小

3、外來鍵

4、觸發器

5、高水位

一個一個解釋:

1、索引的多少

一個表上的索引儲存也是和表一樣需要空間,對這個表的刪除,同樣也會涉及到像關聯索引的刪除,通俗一點,就是說如果一個表有三個索引,如果對這個表的行進行刪除的話,就會相當於對三個沒有索引的表的操作一樣,當然,這只是一個比喻。索引的刪除和表中行的刪除基本類似,都是在相應行上做一個標識。

2、表每一行的大小

對於兩個表,同樣刪除100行資料,都沒有索引的情況下,如何一個表的行大小明顯大於另外一個表的時候,這就造成同樣刪除100行,不同的表涉及不同數量的資料塊數目,這樣也會造成不同表有不同的處理時間。

3、外來鍵

假如一個表存在外來鍵,進行刪除接連的話,刪除一個表的一行就會相應對多個表進行操作。

4、觸發器

這個就不需要多解釋了。主要是行刪除觸發。

5、高水位

如果一個表中的資料是處於一種頻繁的或者相當數量的更新,刪除,新增的時候下,由於高水位很大,雖說在高水位之下的空間實際使用的空間只佔很下的比例,但是在全錶行刪除的時候也是會對所有的塊進行處理。

應對策略:

1drop表,重建表。最快

2trucate

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-916986/,如需轉載,請註明出處,否則將追究法律責任。

相關文章