mysql查询索引数组_mysql-索引
索引模型: hash,有序數組,搜索樹
1,hash: key,value存儲。存儲結構類似于Java7 的hashmap。 同一節點使用鏈表的形式存儲。適合單個等值查詢,不適用于范圍查詢
2,有序數組:按從大到小有序存儲,類似于鏈表。等值,范圍查詢使用二分 時間復雜度Olog(N),查詢效率搞。但插入一條數據都要,移動后面的所有數據。適用于靜態存儲引擎
3,搜索樹:樹結構,查詢時間復雜度O(log(N)),更新時間復雜度O(log(N)).
數據庫大都不適合使用二叉樹,層級會非常高,每一層存放在一個數據頁中,100萬節點的平衡二叉樹,樹高20,需要訪問20個數據塊,每個數據快的尋址大概需要10ms.查詢耗時比較長.
搜索需要查多次磁盤(從磁盤隨機讀取一個數據塊,需要10ms左右的尋址時間)。
innoDB引擎的索引。B+樹
innoDB的索引模式也可以稱之為N叉樹,這個N大概為1200。N叉樹的高度一般不超過4,當高度為4時,其可以存儲的數據為1200的三次方,大概為17億。這樣查詢一個值最多只需要訪問3次磁盤。
而且樹的第二層,有很大的概率在內存中,這樣大大提升了查詢效率。
innoDB的數據存儲在B+樹的葉子節點,按主鍵順序存儲。相當于主鍵索引,也稱之為聚簇索引。
非主鍵索引,也稱之為二級索引。二級索引也是一顆B+樹,按索引字段排序。
二級索引的查找數據過程,先通過普通索引查出數據對應的主鍵,在通過主鍵查詢整行信息(查詢數據不僅是主鍵時)(回查聚簇索引,稱之為回表)
如果查詢的數據只是主鍵id,不需要回表,因為通過二級索引已經可以查詢到主鍵信息。稱之為覆蓋索引。
注意:每次數據調整,都需要調整每顆樹的結構。在索引過多時,每次新增需要調整的數據結構就更多。
固索引當按需創建,杜絕無效索引。
另外索引支持最左前綴原則,like 'li%' 這種形式可以支持索引。
索引下推 聯合查詢時,先在索引中過濾完成之后再回表取數據
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的mysql查询索引数组_mysql-索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 查询临时表列名_为什么mys
- 下一篇: MySQL各部门求最值_mysql 求分