資料庫的實體設計,資料庫索引的相關筆記。
資料庫中最普遍的使用方法。底層硬碟的存儲也有使用b+樹。
b+樹屬于多路平衡搜尋樹,理論複雜度和平衡二叉樹相同操作都是log(n)。因為多路的特性,i/o操作上更有優勢,并且也讓樹的深度降低。是以,設計b+樹時,是盡可能讓樹的深度降低的。
隻是以使用b+樹而不是b-數,是因為b+樹的關鍵字全在葉子節點。這樣一來,硬碟一個簇可以存更多節點。可減少io次數。
使用hash算法計算出散列值,通過散列值快速定位查找的資料。
hash索引可能是通路資料庫中資料的最快方法,因為hash算法幾乎可以認為是o(1)的。
但是 hash 索引本身由于其特殊性也帶來了很多限制和弊端。
(1)hash可能出現碰撞,通常有連結清單法和開放尋址法來解決。如果碰撞多了,無疑降低了hash索引的速度。
(2)hash計算出散列後,因為碰撞的原因,還需要進行實際資料對比。
(3)hash算法隻能定位單個,無法進行範圍查詢。自然,如果是組合索引,也無法用部分索引鍵查詢。
可以類比成有序數組,相關屬性按序排列。
一個關系隻能在一個聚簇中,其次不适用于經常更新的關系。
是以聚簇存儲通常适用于:
(1)經常一起進行連接配接操作的關系。
(2)關系的一組屬性經常出現在相等的比較條件中。
(3)關系的屬性上的值重複率很高。