六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

MySQL之btree與hash2種索引的區別

[摘要]我們知道MySQL有btree和hash兩種索引,大家知道它們的區別嗎?本篇文章簡要記述一下mysql中的兩種索引類型,btree和hash的區別。由于 hash 索引結構的特殊性,其檢索效率非常高...
我們知道MySQL有btree和hash兩種索引,大家知道它們的區別嗎?本篇文章簡要記述一下mysql中的兩種索引類型,btree和hash的區別。由于 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 值相關聯。這樣要定位某一條記錄時就會非常麻煩,會浪費多次表數據的訪問,而造成整體性能低下。

以上我們從五個方面介紹了一下btree和hash兩種索引的區別,相信大家都有所了解了,希望大家在工作中能用的到。

相關推薦:

Mysql-索引-BTree類型【精簡】

MySQL 索引優化 btree hash rtree

mysql優化之路----hash索引優化

以上就是MySQL之btree和hash兩種索引的區別的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 欧美在线视频观看 | 亚洲欧美日韩精品久久亚洲区 | 亚洲视频一区在线播放 | 小说区图片区综合久久亚洲 | 日本高清在线观看视频 | 亚洲国产成人久久77 | 亚洲福利二区 | 中文字幕在线精品不卡 | 日本福利片国产午夜久久 | 日在线视频 | 欧美一区日韩一区中文字幕页 | 午夜短视频 | 污免费视频 | 欧美婷婷| 中文国产 | 色偷偷亚洲第一成人综合网址 | 青春草影院 | 青青热久免费精品视频网站 | 亚洲乱码中文字幕久久 | 天天插天天操天天射 | 在线视频一区二区三区 | 天天综合天天影视色香欲俱全 | 色综合成人网 | 日本在线观看一级高清片 | 中文字幕一区二区三区免费视频 | 一级人做人爰a全过程免费视频 | 奇米第四色888 | 伊人中文字幕在线 | 色天天干 | 一级α片视频 | 日韩精品一区二区三区免费视频 | 自拍一区在线 | 日韩毛片免费在线观看 | 亚洲激情视频在线播放 | 亚洲成人99 | 午夜大片在线观看 | 亚洲欧美激情综合第一区 | 香蕉中文在线 | 永久免费看的啪啪网站 | 小视频福利 | 亚洲zscs综合网站 |