
mysql innodb 非唯一索引處理重復鍵機制
當 mysql innodb 引擎使用非唯一索引時,如果遇到重復鍵,數據庫會如何處理?
解答
非唯一索引是一種輔助索引,它會存儲對應行的主鍵 id。當非唯一索引相同,mysql 根據記錄主鍵進行排序。
例如,有一個非唯一索引字段名為 name,其中有兩條記錄:
- 記錄 1:id=4, name=’ccc’
- 記錄 2:id=5, name=’ccc’
在 b+ 樹中,它們會按照以下方式排序:
ccc (record 1) ccc (record 2)
也就是說,具有相同非唯一索引值的記錄始終存儲在相鄰的位置,排序依次是主鍵 id 的順序。