鍍金池/ 問答/數(shù)據(jù)庫/ mysql的innodb引擎,不管怎樣每張表都會(huì)有聚集索引,那這個(gè)聚集索引能否刪

mysql的innodb引擎,不管怎樣每張表都會(huì)有聚集索引,那這個(gè)聚集索引能否刪除呢?

關(guān)于聚集索引,innodb會(huì)按照如下規(guī)則進(jìn)行處理:
  1,如果一個(gè)主鍵被定義了,那么這個(gè)主鍵就是作為聚集索引
  2,如果沒有主鍵被定義,那么該表的第一個(gè)唯一非空索引被作為聚集索引
  3,如果沒有主鍵也沒有合適的唯一索引,那么innodb內(nèi)部會(huì)生成一個(gè)隱藏的主鍵作為聚集索引,這個(gè)隱藏的主鍵是一個(gè)6個(gè)字節(jié)的列,改列的值會(huì)隨著數(shù)據(jù)的插入自增。

但是問題來了,聚集索引的存在,會(huì)導(dǎo)致每次update或者insert數(shù)據(jù)的時(shí)候,還要額外更新一下索引,如果表的數(shù)據(jù)量很大,勢必會(huì)影響更新和插入數(shù)據(jù)時(shí)的性能。innodb是面對這種情況是如何處理的?或者說我們該如何處理這種情況?可以把聚集索引刪除嗎?但我看innodb的特性決定了聚集索引好像沒法刪除

回答
編輯回答
夢若殤

建議這種問題自己去做做測試,找不同的引擎使用不同的索引驗(yàn)證一下,聚集索引帶來的更新索引性能犧牲根本可以忽略,甚至合適的聚集索引反而會(huì)提高更新插入性能,mysql或者其他類型的DB可以給你很多種選擇。

2017年11月6日 08:18