四、數據庫索引

索引的作用:提高數據查詢效率
常見索引模型:哈希表、有序數組、搜索樹
哈希表:鍵 - 值(key - value)。
哈希思路:把值放在數組裏,用一個哈希函數把key換算成一個確定的位置,然後把value放在數組的這個位置
哈希衝突的處理辦法:鏈表
哈希表適用場景:只有等值查詢的場景
有序數組:按順序存儲。查詢用二分法就可以快速查詢,時間複雜度是:O(log(N))
有序數組查詢效率高,更新效率低
有序數組的適用場景:靜態存儲引擎。
二叉搜索樹:每個節點的左兒子小於父節點,父節點又小於右兒子
二叉搜索樹:查詢時間複雜度O(log(N)),更新時間複雜度O(log(N))
數據庫存儲大多不適用二叉樹,因爲樹高過高,會適用N叉樹
InnoDB中的索引模型:B+Tree
索引類型:主鍵索引、非主鍵索引
主鍵索引的葉子節點存的是整行的數據(聚簇索引),非主鍵索引的葉子節點內容是主鍵的值(二級索引)
主鍵索引和普通索引的區別:主鍵索引只要搜索ID這個B+Tree即可拿到數據。普通索引先搜索索引拿到主鍵值,再到主鍵索引樹搜索一次(回表)
一個數據頁滿了,按照B+Tree算法,新增加一個數據頁,叫做頁分裂,會導致性能下降。空間利用率降低大概50%。當相鄰的兩個數據頁利用率很低的時候會做數據頁合併,合併的過程是分裂過程的逆過程。
從性能和存儲空間方面考量,自增主鍵往往是更合理的選擇。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章