mysql索引之二级索引学习总结
二級索引又稱輔助索引、非聚集索引(no-clustered index)。b+tree樹結(jié)構(gòu)。然而二級索引的葉子節(jié)點(diǎn)不保存記錄中的所有列,其葉子節(jié)點(diǎn)保存的是<健值,(記錄)地址>。好似聚集索引中非葉子節(jié)點(diǎn)保存的信息,不同的是二級索引保存的是記錄地址,而聚集索引保存的是下一層節(jié)點(diǎn)地址。記錄的地址一般可以保存兩種形式。?
1. 記錄的物理地址,頁號:槽號:偏移量?
2 . 記錄的主鍵值
innodb引擎是索引組織表,所有記錄都放在聚集索引里,因此其輔助索引中的記錄地址存放的主鍵的鍵值。
innodb讀操作:
通過二級索引查詢記錄僅能得到主鍵值,要查詢完整的記錄還需要再通過一次聚集索引查詢,這種查詢方式為書簽查找(bookmark lookup)。?
注:聚集索引:例如查字典,每個字所在的位置有一個頁碼,如果你知道一個字的所在具體頁數(shù)便可直接翻到相應(yīng)的頁,此刻可以把字典中的頁碼看成主鍵。字典的正文就是一個查詢目錄而不需要在通過其他目錄來查找。這種正文本身具有一定的規(guī)則排序的目錄稱為聚集索引。?
二級索引:此操作就如查字典,先找到生字的偏旁部首查找到字在哪一頁(獲得主鍵的位置),然后再翻到生字的具體章節(jié)葉。
innodb寫操作:
僅當(dāng)主鍵發(fā)生改變時,才會更新二級索引
二級索引的非葉子節(jié)點(diǎn)存放的記錄格式為<鍵值,主鍵值,地址>,二級索引的非葉子節(jié)點(diǎn)依然存在主鍵信息。二級索引節(jié)點(diǎn)的記錄不保存隱藏列xid和roll ptr。聚集索引的非葉子節(jié)點(diǎn)保存的是下一層節(jié)點(diǎn)地址。?
由于二級索引不包含記錄的完整信息,在innodb存儲引擎中二級索引的樹高度比聚簇索引的樹高度小,二級索引效率低。
總結(jié)
以上是生活随笔為你收集整理的mysql索引之二级索引学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: akshare双均线backtrader
- 下一篇: electron安装比较慢的方法