Innodb存储引擎索引
Innodb存储引擎有下面三种索引
- B+树索引
- 全文索引
- 哈希索引
哈希索引在Innobd存储引擎中是自适应的,存储引擎会根据表的使用情况自动生成哈希索引,也就是当数据被查询以此之后,会缓存起来,形成哈希键值,下次查询的时候会走哈希索引
B+数索引构造类似于二叉树,根据key快速查找到数据,另外B+树并不是通过给定键值查询到具体行,B+树只是能通过给定的键值找到具体的页,然后数据库把页读取到内存中,再在内存中查找得到想要的数据。
B+树索引
B+树和二叉树和平衡二叉树一样,都是经典的数据结构,他们其实都使用了二分法查找,不同点是,二叉树会出现不平衡的现象。平衡二叉树通过左右旋转维持平衡,但是由于每个节点存储的数据少,索引层级深,而B+树使用了旋转维持平衡,又通过每个叶子节点存储多个数据且叶子节点间通过链表相连,从而减少了层级,加快了查询速度。对比B树,B树上所有的节点上都保存数据,相对的来说他的层级更深,所以B+树相当于对B树的优化,
B+树一般是2-4层,数据库中B+树索引分为聚集索引和非聚集索引
全文索引
全文索引是将存储于数据库中的整本书或整篇文章任意位置内容信息查找出来的技术,之前的innodb不支持该技术,从1.2x版本开始,innodb开始支持该技术。
- 倒排索引
全文索引通常使用倒排索引来实现,他在辅助表中存储了单词与单词自身在一个或者多个中所在的位置之间的映射,通常使用关联数组来实现。
哈希索引
Innodb存储引擎中的缓存池页中存在哈希表,并且缓存池页都有一个chain指针,他指向哈希函数值的页,哈希索引是数据库自身创建并使用的,比如 select * from table where name ='xxx' ,当下一次使用name =‘xxx’查询可能就会走hash索引了,但是如果是范围查询就一定不会走hash索引了。