索引的常見模型
innodb索引模型
每乙個索引在innodb中都對應一顆b+樹。
主鍵索引的葉子結點存的是整行資料(聚簇索引)
非主鍵索引的葉子結點儲存的是主鍵值(二級索引)
也就是說基於二級索引的查詢會有一次回表。
索引維護
b+樹為了維護有序性,在插入新值的時候需要做必要的維護。
自增主鍵:每次插入都是追加操作,不涉及記錄的挪動與葉子結點的**。
主鍵長度越小,二級索引的葉子結點就越小,占用的空間也就越小。
如果刪除,新建主鍵索引,會同時去修改二級索引的葉子結點,效能消耗大。
覆蓋索引
含義:索引表覆蓋了查詢的所需的字段內容。
覆蓋索引可以通過避免回表,減少樹的搜尋次數,從而提高查詢效能。
最左字首原則
索引項是按照索引定義裡面出現的字段順序排序的。
最左字首可以是聯合索引的最左n個字段,也可以是字串索引的最左m個字元。
第一原則是,如果通過調整順序,可以少維護乙個索引,那麼這個順序是需要優先考慮採用的。
索引下推
可以在索引遍歷的過程中,對索引中包含的字段先做判斷,直接過濾掉不滿足條件的記錄,減少回表次數。
04 深入淺出索引(上)
1.索引的作用 提高資料查詢效率,就像書的目錄一樣。2.常見索引模型 雜湊表 有序陣列 搜尋樹 3.雜湊表 鍵 值 key value 4.雜湊思路 把值放在陣列裡,用乙個雜湊函式把key換算成乙個確定的位置,然後把value放在陣列的這個位置 5.雜湊衝突的處理辦法 鍊錶 6.雜湊表適用場景 只有...
深入淺出理解索引
一 深入淺出理解索引結構 實際上,您可以把索引理解為一種特殊的目錄。sql server提供了兩種索引 聚集索引 clustered index,也稱聚類索引 簇集索引 和非聚集索引 nonclustered index,也稱非聚類索引 非簇集索引 下面,我們舉例來說明一下聚集索引和非聚集索引的區別...
深入淺出理解索引
一 深入淺出理解索引結構 實際上,您可以把索引理解為一種特殊的目錄。sql server提供了兩種索引 聚集索引 clustered index,也稱聚類索引 簇集索引 和非聚集索引 nonclustered index,也稱非聚類索引 非簇集索引 下面,我們舉例來說明一下聚集索引和非聚集索引的區別...