参考文章:
- 《MySQL技术内幕:InnoDB存储引擎》
哈希是一种非常快的查找方法,在一般情况下这种查找的时间复杂度为O(1),而B+树的查找次数取决于B+树的高度。InnoDB存储引擎会监控表上各索引的查询,如果检测到建立哈希索引可以带来速度的提升,则建立哈希索引,称之为自适应哈希索引。
- 自适应哈希索引是通过缓冲池的B+树页构造而来的,索引建立的速度很快。
- InnoDB存储引擎会自动根据访问频率和模式来自动地为某些热点页建立哈希索引。
建立哈希索引需要满足以下要求:
- 对页的连续访问模式必须一样
例如:有联合索引(a,b),有两种访问模式:
- WHERE a=xxx
- WHERE a=xxx and b=xxx。
如果上述两种查询条件交替进行,则InnoDB存储引擎不会对该页构造哈希索引。
- 以该模式访问了100次
- 页通过该模式访问了N次,其中N=页中记录*1/16
说明:启用哈希索引后,读取和写入速度可以提高2倍;辅助索引的连接操作性能可以提升5倍。