MySQL的一级索引和二级索引介绍,HBase中提到的二级索引【笔记自用】
1、一級索引
索引和數據存儲在一起,都存儲在同一個B+tree中的葉子節點。一般主鍵索引都是一級索引。
2、二級索引
二級索引樹的葉子節點存儲的是主鍵而不是數據。也就是說,在找到索引后,得到對應的主鍵,再回到一級索引中找主鍵對應的數據記錄。
3、例子介紹
下面我們通過一個具體的示例進行演示一級索引和二級索引。有如下表pl_ranking(編程語言排行榜表),該表包含3個字段,如下:
id:主鍵 plname:編程語言名稱 ranking:排名3.1 主鍵索引結構
從圖中我們可以看到,索引和數據都在一顆樹的葉子節點,是存在一起的。通過定位索引就直接可以查找到數據。如果查找id=16的編程語言
則只需要讀取3個磁盤塊,就可以獲取到數據。
3.2 非主鍵索引結構
如果根據字段plname創建索引,B+樹結構如下:
從上圖中我們發現,該B+tree根據plname列進行構建的,只存儲一級索引數據。比如,查找編程語言為“Java”的數據
首先通過二級索引樹中找到Java對應的主鍵id為 “16”(讀取2個磁盤塊)。然后在去主鍵索引中查找id為“16” 的數據(讀取3個磁盤塊)。
3.3 一級索引和二級索引的關系:回表
一級索引可以單獨存在,二級索引不能單獨存在,必須依附于一級索引,這叫做“回表”。
4.0 二級索引存儲主鍵值而不是存儲數據優缺點
優點:
1、減少數據冗余
2、減少行移動或者數據頁分裂時二級索引的維護工作,當數據需要更新的時候,二級索引不需要修改,只需要修改一級索引,一個表只能有一個一級索引,其他的都是二級索引,這樣只需要修改一級索引就可以了,不需要重新構建二級索引
缺點:
根據二級索引查找行的完整數據需要回表
參考自:https://blog.csdn.net/weixin_43606861/article/details/116202806
總結
以上是生活随笔為你收集整理的MySQL的一级索引和二级索引介绍,HBase中提到的二级索引【笔记自用】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原创:护理学毕业生想当公务员?这6大岗位
- 下一篇: 各数据结构算法时间复杂度图【笔记自用】