日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL btree索引與hash索引區別

瀏覽:195日期:2023-10-11 08:51:22

在MySQL中,大多數索引(如 PRIMARY KEY,UNIQUE,INDEX和FULLTEXT)都是在BTREE中存儲,但使用memory引擎可以選擇BTREE索引或者HASH索引,兩種不同類型的索引各自有其不同的使用范圍。

B樹索引具有范圍查找和前綴查找的能力,對于有N節點的B樹,檢索一條記錄的復雜度為O(LogN)。相當于二分查找。 哈希索引只能做等于查找,但是無論多大的Hash表,查找復雜度都是O(1)。

顯然,如果值的差異性大,并且以等值查找(=、 <、>、in)為主,Hash索引是更高效的選擇,它有O(1)的查找復雜度。如果值的差異性相對較差,并且以范圍查找為主,B樹是更好的選擇,它支持范圍查找。

一、HASH索引

利用哈希函數,計算存儲地址,檢索時不需要像Btree那樣,從根節點開始遍歷,逐級查找。

Hash 索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B-Tree 索引需要從根節點到枝節點,最后才能訪問到頁節點這樣多次的IO訪問,所以 Hash 索引的查詢效率要遠高于 B-Tree 索引。

可能很多人又有疑問了,既然 Hash 索引的效率要比 B-Tree 高很多,為什么大家不都用 Hash 索引而還要使用 B-Tree 索引呢?任何事物都是有兩面性的,Hash 索引也一樣,雖然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也帶來了很多限制和弊端,主要有以下這些。

(1)Hash 索引僅僅能滿足”=”,”IN”和”<=>”查詢,不能使用范圍查詢(查詢范圍時 慢)。

由于 Hash 索引比較的是進行 Hash 運算之后的 Hash 值,所以它只能用于等值的過濾,不能用于基于范圍的過濾,因為經過相應的 Hash 算法處理之后的 Hash 值的大小關系,并不能保證和Hash運算前完全一樣。

(2)Hash 索引無法被用來避免數據的排序操作。

由于 Hash 索引中存放的是經過 Hash 計算之后的 Hash 值,而且Hash值的大小關系并不一定和 Hash 運算前的鍵值完全一樣,所以數據庫無法利用索引的數據來避免任何排序運算;

(3)Hash 索引不能利用部分索引鍵查詢。

對于組合索引,Hash 索引在計算 Hash 值的時候是組合索引鍵合并后再一起計算 Hash 值,而不是單獨計算 Hash 值,所以通過組合索引的前面一個或幾個索引鍵進行查詢的時候,Hash 索引也無法被利用。

(4)Hash 索引在任何時候都不能避免表掃描。

前面已經知道,Hash 索引是將索引鍵通過 Hash 運算之后,將 Hash運算結果的 Hash 值和所對應的行指針信息存放于一個 Hash 表中,由于不同索引鍵存在相同 Hash 值,所以即使取滿足某個 Hash 鍵值的數據的記錄條數,也無法從 Hash 索引中直接完成查詢,還是要通過訪問表中的實際數據進行相應的比較,并得到相應的結果。

(5)Hash 索引遇到大量Hash值相等的情況后性能并不一定就會比B-Tree索引高。

對于選擇性比較低的索引鍵,如果創建 Hash 索引,那么將會存在大量記錄指針信息存于同一個 Hash 值相關聯。這樣要定位某一條記錄時就會非常麻煩,會浪費多次表數據的訪問,而造成整體性能低下。

二、B+樹

MySQL btree索引與hash索引區別

b+樹的查找過程

如圖所示,如果要查找數據項29,那么首先會把磁盤塊1由磁盤加載到內存,此時發生一次IO,在內存中用二分查找確定29在17和35之間,鎖定磁盤塊1的P2指針,內存時間因為非常短(相比磁盤的IO)可以忽略不計,通過磁盤塊1的P2指針的磁盤地址把磁盤塊3由磁盤加載到內存,發生第二次IO,29在26和30之間,鎖定磁盤塊3的P2指針,通過指針加載磁盤塊8到內存,發生第三次IO,同時內存中做二分查找找到29,結束查詢,總計三次IO。真實的情況是,3層的b+樹可以表示上百萬的數據,如果上百萬的數據查找只需要三次IO,性能提高將是巨大的,如果沒有索引,每個數據項都要發生一次IO,那么總共需要百萬次的IO,顯然成本非常非常高。

b+樹性質

1.索引字段要盡量的小:

通過上面的分析,我們知道IO次數取決于b+數的高度h,假設當前數據表的數據為N,每個磁盤塊的數據項的數量是m,則有h=?(m+1)N,當數據量N一定的情況下,m越大,h越小;而m = 磁盤塊的大小 / 數據項的大小,磁盤塊的大小也就是一個數據頁的大小,是固定的,如果數據項占的空間越小,數據項的數量越多,樹的高度越低。這就是為什么每個數據項,即索引字段要盡量的小,比如int占4字節,要比bigint8字節少一半。這也是為什么b+樹要求把真實的數據放到葉子節點而不是內層節點,一旦放到內層節點,磁盤塊的數據項會大幅度下降,導致樹增高。當數據項等于1時將會退化成線性表。

2.索引的最左匹配特性(即從左往右匹配):

當b+樹的數據項是復合的數據結構,比如(name,age,sex)的時候,b+數是按照從左到右的順序來建立搜索樹的,比如當(張三,20,F)這樣的數據來檢索的時候,b+樹會優先比較name來確定下一步的所搜方向,如果name相同再依次比較age和sex,最后得到檢索的數據;但當(20,F)這樣的沒有name的數據來的時候,b+樹就不知道下一步該查哪個節點,因為建立搜索樹的時候name就是第一個比較因子,必須要先根據name來搜索才能知道下一步去哪里查詢。比如當(張三,F)這樣的數據來檢索時,b+樹可以用name來指定搜索方向,但下一個字段age的缺失,所以只能把名字等于張三的數據都找到,然后再匹配性別是F的數據了, 這個是非常重要的性質,即索引的最左匹配特性。

以上就是MySQL btree索引與hash索引區別的詳細內容,更多關于MySQL btree索引與hash索引的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆精品蜜桃| 亚洲啊v在线| 欧美1级日本1级| 91精品国产成人观看| 国产黄大片在线观看| 成人一二三区| 国产a亚洲精品| 久久影视三级福利片| 免费日韩成人| 日本美女一区| 日韩视频在线一区二区三区| 五月天久久网站| 亚洲欧美日韩高清在线| 亚洲一区二区三区四区五区午夜| 国产韩日影视精品| 国产韩日影视精品| 日韩精品一卡二卡三卡四卡无卡| 亚洲资源在线| 麻豆精品在线| 91精品韩国| 亚洲区国产区| 精品国产乱码| 久久在线视频免费观看| 尤物在线精品| 欧美一级二级视频| 国产欧美一区二区三区精品酒店| 波多野结衣一区| 97成人在线| 久久久久国产| 88久久精品| 国产一区二区三区探花| 久久九九精品| 国产精品亚洲一区二区三区在线观看| 久久精品影视| 麻豆精品99| 视频一区视频二区中文| 麻豆精品国产91久久久久久| 欧美日韩国产传媒| 久久中文字幕一区二区| 亚洲专区一区| 999久久久国产精品| 国产亚洲观看| 久久福利一区| 国产91精品对白在线播放| 爽好多水快深点欧美视频| 最新国产精品| 久久久久国产精品一区二区| 欧美日本不卡高清| 男女激情视频一区| 欧美国产91| av亚洲一区二区三区| 你懂的亚洲视频| 日韩高清欧美激情| 国产婷婷精品| 亚洲国产日韩欧美在线| 亚洲一区资源| 国产福利电影在线播放| 久久精品午夜| 久久字幕精品一区| 国产亚洲字幕| 婷婷亚洲成人| 蜜桃av一区二区| 亚洲精选久久| 在线国产精品一区| 美日韩精品视频| 亚洲日产av中文字幕| 中文字幕日韩高清在线| 香蕉久久一区| 欧美专区一区| 美女高潮久久久| 精品亚洲a∨一区二区三区18| 欧美激情日韩| 日韩中文在线播放| 国产婷婷精品| 日韩久久99| 久久国产三级| 粉嫩av一区二区三区四区五区| 国产欧美成人| 国产成人免费视频网站视频社区| 麻豆视频在线看| 免费国产自久久久久三四区久久 | 亚洲精品自拍| 亚洲精品动态| 国产精品**亚洲精品| 国产区精品区| 欧美羞羞视频| 久久不射网站| 久久久国产精品入口麻豆| 精品捆绑调教一区二区三区| 日本一区二区高清不卡| 久久天堂成人| 免费成人在线视频观看| 91精品国产经典在线观看| 国产suv精品一区| 女同性一区二区三区人了人一| 免费在线观看精品| 欧美国产先锋| 国产高清一区| 精品亚洲a∨一区二区三区18| av资源亚洲| 日韩激情啪啪| 欧美不卡在线| 久久99伊人| 91综合网人人| 久久精品资源| 色狠狠一区二区三区| 日本成人一区二区| 久久久久.com| 午夜在线精品偷拍| 7777精品| 国产传媒av在线| 日韩不卡一二三区| 国产综合精品一区| 国产精品色网| www在线观看黄色| 天堂精品久久久久| 国产一区二区三区不卡av | 美女尤物久久精品| 欧美 日韩 国产精品免费观看| 国产欧美日韩| 国产精品videossex| 国产精品亚洲综合久久| 亚州精品视频| 影音国产精品| 亚洲在线免费| 亚洲三级国产| 精品国产乱码久久久久久1区2匹| 免费日韩一区二区| 美女日韩在线中文字幕| 午夜av一区| 国产精品呻吟| 欧美网站在线| 美女久久网站| 蜜桃久久av一区| 深夜福利亚洲| 国产精品v日韩精品v欧美精品网站 | 福利一区二区三区视频在线观看| 亚洲丝袜啪啪| 亚洲成人二区| 日韩精品首页| 婷婷激情久久| 性欧美69xoxoxoxo| 影音先锋久久精品| 日韩精品高清不卡| 免费一区二区三区在线视频| 九九久久国产| 激情五月色综合国产精品| 亚洲一卡久久| 欧美日韩视频免费看| 日韩精品国产欧美| 精品一区二区三区中文字幕 | www.com.cn成人| 亚洲中字黄色| 国产精品白浆| 亚洲精品va| 欧美国产中文高清| 国产一区视频在线观看免费| 亚洲精品极品| 精品视频高潮| 一区二区三区四区精品视频| 久久av网站| 91超碰国产精品| 国产日本精品| 高清一区二区三区av| 久久五月天小说| 国产精品一区二区三区av麻| 久久精品亚洲欧美日韩精品中文字幕| 中文一区在线| 国产v日韩v欧美v| 久久狠狠久久| 久久在线免费| 精品72久久久久中文字幕| 91精品成人| 精品国产乱码久久久久久樱花| 午夜国产精品视频免费体验区| 日韩av不卡在线观看| 欧美高清不卡| 精品日本视频| 视频在线在亚洲| 亚洲性图久久| 国产成人免费视频网站视频社区| 日本欧洲一区二区| 欧美日韩国产一区二区三区不卡 | 日韩欧美在线精品| 欧美a级片一区| 色爱av综合网| 日本一区二区免费高清| 久久成人高清| 亚洲精品免费观看| 欧美日韩国产v| 国产一区清纯| 亚洲黄色免费看| 国产成人久久精品一区二区三区| 日本亚洲最大的色成网站www| 美女精品网站| 五月综合激情| 野花国产精品入口| 激情五月综合网| 狠狠爱成人网| 欧美在线影院|