InnoDB常见索引

本文介绍了InnoDB存储引擎中常见的三种索引类型:B+树索引,自适应哈希索引和全文检索。详细讲解了B+树索引的结构和工作原理,自适应哈希索引如何提高查询效率,以及全文检索中的倒排索引概念,包括基本的倒排索引和包含位置信息的全倒排索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. B+树索引
  2. 自适应哈希索引
  3. 全文检索
一、B+树索引
     所有记录按键值的大小顺序存到B+树的叶子节点,叶子节点构成一个双向链表。B+树的查找次数和高度有关,B+树索引的高度一般在2—4层。
     B+树索引分为聚集索引和辅助索引。区别是叶子节点是否包括一整行的信息。
     聚集索引:按照每张表的主键,构造B+树,叶子节点称为数据页。
                     每张表只能有一个聚集索引。
                     聚集索引是逻辑连续的,数据页通过双向链表连接,所以物理存储可以不连续。
                     对于主键的排序查找和范围查找非常快。
     辅助索引:叶子节点不包含行记录的全部数据,叶子节点的索引行包含了一个书签,书签指向了与索引对应的行      数据。
                    书签就是行数据的聚集索引。
                    每个表可以有多个辅助索引。

二、自适应哈希索引
     哈希算法复杂度为O(1)。自适应哈希索引是以哈希表的方式实现。冲突机制采用链表方式。
     当建立哈希索引会提高查找速度时会自动建立哈希索引,自适应哈希索引通过哈希函数映射到哈希表中,对于等值查找很快,不能范围查找。

三、全文检索
     全文检索的实现方式是倒排索引。倒排索引是在辅助表中存储了单词和单词所在文档位置的映射,通过关联数组实现,两种方式:
  1. inverted file index,(word, document Id),例如,(code, (1,4)),表示单词code在文档1和文档4中。
  2. full  inverted index, (word,(document Id,position)),例如,(code, ( (1:6),(4:20) )),表示单词code 在文档1的第六个位置,文档4的第20个位置。
     Innodb采用第二种方式,(document Id, position)看成一个ilist, 即(word,ilist),word上设有索引。倒排索引将word存放在辅助表上,Innodb中有6张辅助表,存在磁盘上。
     全文检索索引缓存,红黑树实现,根据(word,ilist)排序。插入数据时会批量对辅助表进行更新,查询时,辅助表会将缓存中的word字段合并到辅助表再进行查询,数据库关闭时,缓存中的数据库会同步到辅助表。
     每张表只能有一个全文检索索引。由多列组合而成的索引列必须使用相同的字符集和排序规则。不支持没有单词界定符的语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值