2013-01-03 218 views
1

我在想,當一個條目被添加到MySQL表中時,哪些索引需要更長的時間來更新。那些基數高或基數低的指數。哪些MySQL索引需要更長的時間才能更新?

是一般規則嗎?

+1

@Quassnoi已經[先前已經回答](http://stackoverflow.com/a/2599004)一個類似的問題的一些細節,並得出結論「*您的問題的答案是:不,列基數不影響索引寫入性能*「。 – eggyal

回答

1

這兩種類型的表格通常具有相同數量的更改。如果您更改N行,則需要更新N個密鑰。

但是,高基數有許多獨特的值(例如約束條件爲UNIQUE的關鍵字),低基數具有很少的唯一值。

很少有值會比許多值佔用更少的空間,因此索引的更大比例(可能全部)將適合緩存/緩存。因此,更新和讀取將由RAM提供而不是訪問磁盤,這意味着它會更快。

另一方面,如果基數很低,那麼索引並不是那麼有用。畢竟,你想要一個索引快速查找行。理想情況下,對樹或散列結構的1-5次探測只返回一行(超過幾百萬行/十億行)。或者,對應於某個範圍的行的子集。
如果您用來查找行的索引每次都會返回一組10,000行,這通常不是非常有用(當然也有例外)。

相關問題