從本質上理解,BTREE是一種有序樹,而hash是無序的。因此最關鍵的區別在於:spa
1,BTREE能夠用來作範圍查詢,好比大於,小於,而HASH索引僅在"=","IN"和"<=>"查詢時效率較高;orm
2,HASH索引不能避免排序操做;(有order by的時候用btree)排序
3, HASH索引不能用來作部分索引;(有組合索引的時候用btree)索引
4, 若是被索引列有不少相同值的時候,hash衝突會比較多,效率可能不如btree; 可是若是都是不一樣值的時候(惟一),btree由於要進行樹遍歷查詢,而hash能夠O(1)查詢,則hash的效率要高不少;ci