成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL btree索引與hash索引區(qū)別

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

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

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

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

一、HASH索引

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

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

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

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

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

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

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

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

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

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

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

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

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

二、B+樹

MySQL btree索引與hash索引區(qū)別

b+樹的查找過程

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

b+樹性質(zhì)

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

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

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

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

以上就是MySQL btree索引與hash索引區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于MySQL btree索引與hash索引的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日本一区二区三区在线不卡| 成人avav影音| 国产老妇另类xxxxx| 亚洲永久视频| 中文字幕一区二区三区四区| 色综合欧美在线视频区| 日韩一二三区视频| 国产一二三精品| 精品视频一区二区不卡| 免费久久精品视频| 快she精品国产999| 亚洲成人av一区| 亚洲女同同性videoxma| 亚洲综合色婷婷| 在线亚洲国产精品网站| 成人免费一区二区三区在线观看| 国产精品vip| 国产精品水嫩水嫩| 黄色精品一区| 亚洲免费在线观看视频| 一区二区精品国产| 亚洲一区二区三区在线看| 国产精品久久一区二区三区| 一区二区三区四区亚洲| 国产亚洲第一区| 亚洲影视在线播放| 亚洲一区二区在线看| 一区二区三区在线看| 国产一区二区三区的电影| 亚洲一区二区视频在线| 亚洲一区观看| 日本中文一区二区三区| 91福利视频网站| 精品影院一区二区久久久| 欧美丰满美乳xxx高潮www| 国产jizzjizz一区二区| 精品国偷自产国产一区| 欧美一区二区视频在线 | 玖玖国产精品视频| 免费成人在线播放| 欧美精品123区| 99热99精品| 国产精品网站在线| 亚洲精品一区二区三区av| 亚洲久草在线视频| 国内精品福利| 一区二区三区在线不卡| 久久精品1区| 韩日av一区二区| 欧美tickling挠脚心丨vk| 欧美精品在线一区| 亚洲精品成人在线| 色婷婷综合久久久久中文一区二区 | 久久综合国产精品| 99国产精品久久久久久久久久久| 国产精品免费av| 国产欧美午夜| 免费的国产精品| 日韩一区二区三区免费看| 91猫先生在线| 亚洲精品免费一二三区| 一本到三区不卡视频| 国产尤物一区二区| 久久久久久久久久久99999| 亚洲黄色影院| 日韩电影免费一区| 日韩欧美专区在线| 国产精品sm| 日韩精品午夜视频| 欧美一区二区美女| 国外成人免费视频| 日本色综合中文字幕| 精品美女被调教视频大全网站| 亚洲国产一区二区在线| 日韩一区精品视频| 久久色.com| 香蕉视频成人在线观看 | 伊人色综合久久天天| 91久久国产最好的精华液| 国产91丝袜在线播放九色| 久久久美女毛片| 国产日韩欧美一区二区三区在线观看| 毛片av一区二区| 欧美国产日韩a欧美在线观看| 性xx色xx综合久久久xx| 风间由美一区二区三区在线观看| 亚洲欧洲成人精品av97| 亚洲日本国产| 国产精品456露脸| 亚洲精品伦理在线| 日韩免费观看高清完整版| 国产精品日韩久久久| 国产不卡在线视频| 一区二区三区视频在线观看 | 亚洲欧洲精品一区二区三区 | 一本久道久久久| 国产又黄又大久久| 最新欧美精品一区二区三区| 欧美三级在线播放| 亚洲午夜高清视频| 国内精品写真在线观看| 国产精品成人一区二区艾草 | 黑丝一区二区| 国产制服丝袜一区| 一区二区成人在线视频| 久久这里只精品最新地址| 久久性天堂网| 欧美三级特黄| 国产精品一级片| 一区二区三区产品免费精品久久75| 欧美一区二区在线视频| 亚洲欧美电影在线观看| 91在线一区二区三区| 免费人成在线不卡| 国产精品免费看片| 91精品国产欧美一区二区成人| 亚洲精品日韩在线观看| 国产91丝袜在线18| 视频一区二区国产| 综合久久综合久久| 亚洲精品一区在线观看| 在线精品亚洲一区二区不卡| 在线欧美视频| 成人一区在线看| 日韩成人精品在线观看| 中文字幕制服丝袜成人av | 亚洲欧美日本韩国| 精品久久久久久无| 在线免费亚洲电影| 欧美破处大片在线视频| 国产精品一区二区三区99| 亚洲综合免费观看高清完整版在线 | 国产99一区视频免费| 日韩国产精品大片| 亚洲视频一区在线| 久久久久国产一区二区三区四区 | 国产精品一卡二卡| 亚洲成人av资源| 国产精品国产三级国产aⅴ原创| 日韩欧美中文字幕制服| 欧美婷婷六月丁香综合色| 中文在线一区| 欧美激情国产日韩| www.色精品| 国产综合一区二区| 人人狠狠综合久久亚洲| 一区二区三区丝袜| 国产精品美女久久久久aⅴ| 26uuu国产电影一区二区| 制服丝袜亚洲色图| 欧美日韩一区视频| 在线视频综合导航| 国产亚洲第一区| 亚洲精品1区2区| 国产精品v欧美精品∨日韩| 91免费观看视频在线| 99热精品一区二区| 风间由美中文字幕在线看视频国产欧美| 美日韩一区二区三区| 日韩影视精彩在线| 婷婷国产v国产偷v亚洲高清| 亚洲综合清纯丝袜自拍| 亚洲视频资源在线| 亚洲色图视频网| 18涩涩午夜精品.www| 中文字幕在线不卡国产视频| 国产区在线观看成人精品 | 日韩精品视频网站| 亚洲6080在线| 午夜精品久久久久久久| 亚洲丰满少妇videoshd| 亚洲成人免费在线| 一区二区三区四区在线播放| 亚洲精品乱码久久久久| 免费一区视频| 亚洲男女自偷自拍| 男人的天堂亚洲在线| 久久久久一区二区三区| 色屁屁一区二区| 欧美综合天天夜夜久久| 在线观看精品一区| 日本韩国一区二区三区| 欧美日韩午夜在线视频| 欧美女孩性生活视频| 制服丝袜中文字幕亚洲| 日韩精品一区二区在线| 欧美精品一区二区三区一线天视频 | 日韩一二三区不卡| 日韩精品一区二区三区在线| 日韩一级在线观看| 日韩欧美久久一区| 精品99久久久久久| 日本一区二区不卡视频| 亚洲色图另类专区| 亚洲国产日日夜夜| 日本亚洲三级在线| 国产乱色国产精品免费视频| 成人ar影院免费观看视频| 农村妇女精品| 亚洲国产精品久久久久婷婷老年 |