mysql索引類型


1 mysql索引分為 btree索引和哈希索引

1.1 使用場景

  • btree索引能適用於大部分需要索引的場景,
  • hash索引僅能在精確查詢時有明顯優勢,在MySQL中,只有HEAP/MEMORY引擎表才能顯式支持哈希索引

1.2 btree索引

1.2.1 描述

B-Tree索引以B+Tree(樹)的結構存儲數據,B-Tree索引能夠加快數據的查詢速度,B-Tree更適合進行范圍查找

1.2.2 優勢

  • 全值匹配的查詢;如:order_sn=’987654321’;
  • 匹配最左前綴的查詢;
  • 匹配列前綴查詢 ;
  • 匹配范圍值得查詢;
  • 精確匹配左前列並范圍匹配另外一列;
  • 只訪問索引的查詢;
  • B+樹索引的關鍵字檢索效率比較平均,不像B樹那樣波動幅度大,

1.3 hash索引

1.3.1 描述

哈希索引就是采用一定的哈希算法,
把鍵值換算成新的哈希值,檢索時不需要類似B+樹那樣從根節點到葉子節點逐級查找,
只需一次哈希算法即可立刻定位到相應的位置,速度非常快。

1.3.2 優勢

精確查詢索引字段對應的值,速度比btree樹快

1.3.3 局限

如果是等值查詢,那么哈希索引明顯有絕對優勢,因為只需要經過一次算法即可找到相應的鍵值;
如果是范圍查詢檢索,這時候哈希索引就毫無用武之地了,
因為原先是有序的鍵值,經過哈希算法后,有可能變成不連續的了,就沒辦法再利用索引完成范圍查詢檢索;
哈希索引也沒辦法利用索引完成排序,以及
like ‘xxx%’ 這樣的部分模糊查詢(這種部分模糊查詢,其實本質上也是范圍查詢);
哈希索引也不支持多列聯合索引的最左匹配規則;
在有大量重復鍵值情況下,哈希索引的效率也是極低的,因為存在所謂的哈希碰撞問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM