講索引之前讓我們先看看一些常見的資料結構
1.hash
概念:是把任意長度的輸入(又叫做預對映pre-image)通過雜湊演算法變換成固定長度的輸出,該輸出就是雜湊值
時間複雜度和空間複雜度:o(1)
缺點:hash索引不支援範圍查詢,不支援排序
優點:時間複雜度低
比如現在hash表中有7條資料,要查詢id為7的資料只需要一次就能查到,如下圖
2.二叉樹
特點:左子樹都比父節點小,右子樹都比父節點大
讓我們來看看二叉樹的查詢
平衡二叉樹
可見查詢id為7的資料要比全表掃瞄要好.
但是如果我們從1開始插入資料的話,那麼二叉樹應該長這樣
不平衡二叉樹
顯然,查詢id為7的資料也需要7次,跟我們不建立索引是一樣的效果
缺點:存在不平衡問題
如果二叉排序樹是平衡的,則n個節點的二叉排序樹的高度為log2n+1,其查詢效率為o(log2n),近似於折半查詢。如果二叉排序樹完全不平衡,則其深度可達到n,查詢效率為o(n),退化為順序查詢。一般的,二叉排序樹的查詢效能在o(log2n)到o(n)之間。因此,為了獲得較好的查詢效能,就要構造一棵平衡的二叉排序樹。
3.紅黑樹
概念:在進行插入和刪除操作時通過特定操作保持二叉查詢樹的平衡,從而獲得較高的查詢效能
看一下紅黑樹的插入過程
可以發現每次插入都會有一些操作來保證二叉樹的平衡
缺點:和二叉樹一樣,存在不平衡的情況
比如,我們從1插到15,如下圖,可見,右子樹的節點還是比左子樹多
概念:b+ 樹是一種樹資料結構,通常用於資料庫和作業系統的檔案系統中。b+ 樹的特點是能夠保持資料穩定有序,其插入與修改擁有較穩定的對數時間複雜度。b+ 樹元素自底向上插入
b+樹最下層的節點個數會小於上面所選中的degree數量,查詢元素為7的只需要3次
b+tree時間複雜度為logn
5.btree
btree與b+ tree不同點: b+ tree只有在末節點儲存資料,而btree 在所有節點都儲存資料
同時將 1,1,2,3,3這幾個數插入btree和b+ tree中
參考文章:
感覺有用的小夥伴點個贊,加個關注唄
MySql索引剖析
1.最近朋友問我乙個問題,一時把我給問懵了。mysql 索引的本質是什麼?2.資料庫索引的本質 分散儲存的資料結構 首先最簡單的二叉搜尋樹如下 它通過二分查詢的方式大大減少需要檢索的資料體量,從而加速查詢速度。當然有特殊情況 當出現這種二叉樹 例如通過自增id建立的索引 就會導致建立索引沒有提公升查...
MySQL 索引 語法及案例剖析
mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。拿漢語字典的目錄頁 索引 打比方,我們可以按拼音 筆畫 偏旁部首等排序的目錄 索引 快...
搜尋引擎剖析
選自 網路營銷實訓 我們如何才能成為搜尋引擎遊戲中的常勝將軍?在研究這個問題之前,我們先來了解一些基本知識,比如什麼是搜尋引擎 搜尋引擎是怎樣工作的 有哪些主要的搜尋引擎等。那麼,如何檢視 的元標籤呢?很簡單,你只需檢視 的源 即可。以ie 瀏覽器為例,在瀏覽器頂部的導航欄中點選 檢視 然後在其下拉...