MySQL中存储索引用到的数据结构是B+树,B+树的查询时间跟树的高度有关,是log(n),如果用hash存储,那么查询时间是O(1)。

采用Hash来存储确实要更快,但是采用B+树来存储索引的原因主要有以下两点:

一、从内存角度上说,数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次性装入内存, B+树的设计可以允许数据分批加载。

二、从业务场景上说,如果只选择一个数据那确实是hash更快,但是数据库中经常会选中多条,这时候 由于B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了。