摘要:定義索引是幫助高效排好序的數據結構索引存儲在文件里形式二叉樹為什么用而不用二叉樹如果每次的數據都是以的形式添加,會造成二叉樹單邊增長,從而導致查詢效率依然低下紅黑樹會自己旋轉,會有一個自平衡的過程,但是高度是不可控的如果是百萬級別的數據,高
定義:索引是幫助MYSQL高效排好序的數據結構
索引存儲在文件里
形式:二叉樹 HASH BTREE
為什么用BTREE而不用二叉樹:
如果每次的數據都是以1,2,3,4,5,6的形式添加,會造成二叉樹單邊增長,從而導致查詢效率依然低下
紅黑樹會自己旋轉,會有一個自平衡的過程,但是高度是不可控的,(height),如果是百萬級別的數據,高度是完全不可控的
為什么用BTREE而不用HASH:HASH如果是單個查找條件會比較快,比如col=3,直接用hash(index=3)即可,但是范圍查找的話效率很慢,大部分公司有很多業務都會是范圍查找
如果讓你來設計MySQL的BTREE,你覺得degree設為多少合適?
設為磁盤I/O一個節點的值,假如一次I/O最多取4k,就設為4k,作均衡
B+TREE的優勢:非葉子節點不存儲數據,只存儲key
評價一個索引結構好壞的標準:磁盤I/O次數
預讀:磁盤一般會順序向后讀取一定長度的數據(頁的整倍數)放入內存
局部性原理:如果一個數據被用到了,那他附近的數據也馬上會被用到
B+TREE的度一般會超過100,所以高度h會非常小(一般在3-5之間)
MyISAM索引實現:MyISAM索引文件和數據文件是分離的 存儲引擎是表級別,不是數據庫級別
D-->Data I-->index
InnoDB-->聚集索引-->數據和索引是放在一起的-->是按主鍵索引構建的一個BTREE樹
InnoDB-->推薦使用整型自增主鍵-->保證數據可以順序插入到當前索引節點的后續位置,如果是用UUID,需要比較ASCII碼,還有可能插入的地方空間不足需要分裂開,花費更多的時間
不建議使用過長的字段作為主鍵,因為所有輔助索引都引用主索引,過長的主索引會令輔助索引變得過大
為什么非主鍵索引結構葉子節點存儲的是主鍵值?(一致性和節省存儲空間)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74873.html
摘要:雖然有了十全的計劃,但如何高效率去記住上面那么多東西是一個大問題,看看我是怎么做的。 前言 前一篇文章講述了我在三月份毫無準備就去面試的后果,一開始心態真的爆炸,但是又不服氣,一想到每次回來后家人朋友問我面試結果的期待臉,越覺得必須付出的行動來證明自己了。 面經傳送門:一個1年工作經驗的PHP程序員是如何被面試官虐的? 下面是我花費兩個星期做的準備,主要分三部分: 有計劃——計劃好...
摘要:基礎問題的的性能及原理之區別詳解備忘筆記深入理解流水線抽象關鍵字修飾符知識點總結必看篇中的關鍵字解析回調機制解讀抽象類與三大特征時間和時間戳的相互轉換為什么要使用內部類對象鎖和類鎖的區別,,優缺點及比較提高篇八詳解內部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 3085·2021-11-25 09:43
閱讀 2262·2021-09-07 10:28
閱讀 3588·2021-08-11 11:14
閱讀 2784·2019-08-30 13:49
閱讀 3551·2019-08-29 18:41
閱讀 1170·2019-08-29 11:26
閱讀 1981·2019-08-26 13:23
閱讀 3380·2019-08-26 10:43