MySQL / 索引模型
生活随笔
收集整理的這篇文章主要介紹了
MySQL / 索引模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、索引的作用
提高數據查詢效率。
二、常見索引模型
哈希表、有序數組、搜索樹。
三、哈希表
思路:把值放在數組里,用一個哈希函數把 key 換算成一個確定的位置,然后把 value 放在數組的這個位置。
哈希沖突的處理辦法:鏈表、紅黑樹。
哈希表適用場景:只有等值查詢的場景。
四、有序數組
思路:按順序存儲。查詢用二分法就可以快速查詢,時間復雜度是:O(log(N))。
有序數組查詢效率高,更新效率低
有序數組的適用場景:靜態存儲引擎。
五、二叉搜索樹
每個節點的左兒子小于父節點,父節點又小于右兒子。
查詢時間復雜度O(log(N)),更新時間復雜度O(log(N))
六、MySQL索引模型
數據庫存儲大多不適用二叉樹,因為樹高過高,會適用 N 叉樹。
InnoDB 中的索引模型:B+Tree 。
七、索引類型
主鍵索引(聚簇索引)的葉子節點存的是用于保存數據的頁,非主鍵索引(二級索引)的葉子節點內容是主鍵的值。
主鍵索引和普通索引的區別:主鍵索引只要搜索 ID 這個 B+Tree 即可拿到數據。普通索引先搜索索引拿到主鍵值,再到主鍵索引樹搜索一次(回表)
一個數據頁滿了,按照B+Tree算法,新增加一個數據頁,叫做頁分裂,會導致性能下降。空間利用率降低大概50%。當相鄰的兩個數據頁利用率很低的時候會做數據頁合并,合并的過程是分裂過程的逆過程。
從性能和存儲空間方面考量,自增主鍵往往是更合理的選擇。
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的MySQL / 索引模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL /“N叉树”的N值在MySQ
- 下一篇: MySQL / 自带的四个数据库介绍