數據庫索引(BTree索引和Hash索引)


索引

  索引是為了方便查找我們所需要的數據。

 mysql支持的索引數據類型

B-Tree索引的特點

B-Tree索引以B+Tree(樹)的結構存儲數據。

B-Tree索引能夠加快數據的查詢速度;

B-Tree更適合進行范圍查找;

在什么情況下可以用到B樹索引

全值匹配的查詢如:order_sn=’987654321’

匹配最左前綴的查詢

匹配列前綴查詢 

匹配范圍值得查詢

精確匹配左前列並范圍匹配另外一列

只訪問索引的查詢

BTree索引的使用限制

如果不是按照索引的最左列開始查找,則無法使用索引。

使用索引時不能跳過索引中的列

Not in 和<>操作無法使用索引

如果查詢中有某個列的范圍查詢,則其右邊所有的列都無法使用索引

 

Hash索引的特點

Hash索引時基於Hash表實現的,只有查詢條件精確匹配Hash索引中的所有列時,才能夠使用到Hash索引。

對於Hash索引中的所有列,存儲引擎都會為每一行計算一個Hash碼,Hash索引中存儲的就是Hash碼。

Hash索引的限制

Hash索引必須進行二次查找

Hash索引無法用於排序

Hash索引不支持部分索引查找也不支持范圍查找

Hash索引中Hash碼的計算可能存在Hash沖突

為什么要使用索引

索引大大減少了存儲引擎需要掃描的數據量

索引可以幫助我們進行排序避免使用臨時表

索引可以把隨機I/O變為順序I/O

索引是不是越多越好

索引會增加寫操作成本

太多的索引會增加查詢優化器的選擇時間

 


免責聲明!

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



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