
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了MySQL数据库入门需要掌握的一些基础知识等内容,而本文我们就再来了解一下,MySQL索引类型都有哪些。
1、哈希索引
哈希表也称为散列,是一种以键-值(key-value)存储数据的结构。输入查询的key,就能找到对应的value。哈希的思路很简单,把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置。
当然会存在哈希冲突,对个key在经过哈希算法处理后可能出现在哈希表中的同一个槽位,当出现哈希冲突的时候,可以使用链表来解决。这样发生冲突的数据都放入到链表中。
哈希索引的缺点
因为是哈希表存储的是Hash运算之后的Hash值,所以它只能用于等值的查询,范围查询在哈希索引中不支持;
无法利用索引排序,索引中存储的只是Hash计算之后的Hash值,对于排序,索引本身无法支持;
组合索引不能利用部分索引,也就是不支持左匹配原则,对于组合索引,Hash索引在计算Hash值的时候是组合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用;
哈希索引需要进行回表查询,因为哈希索引存储的都是哈希值和行指针,所以不能避免使用索引来避免读取行。
2、全文索引
全文索引就是将存储于数据库中的整本书或整篇文章中的任意内容信息找出来的技术,可以根据需求获取全文中的有关文章,节,段,句,词等信息,也能进行统计和分析。
InnoDB早是不支持存储全文索引的,想要使用全文索引就要选用MySIAM存储引擎,从版本1.2.x开始才增加了全文索引支持。
全文索引一般使用倒排索引(invertedindex)实现,倒排索引和B+树索引一样,也是一种索引结构。
倒排索引在辅助表(auxiliarytable)中存储了单词与单词自身在一个或多个文档中所在位置之间的映射。这样当全文索引,匹配到对应的单词就能知道对应的文档位置了。
倒排索引是区别于正排索引的概念:
正排索引:是以文档对象的ID作为索引,以文档内容作为记录的结构。
倒排索引:Invertedindex,指的是将文档内容中的单词作为索引,将包含该词的文档ID作为记录的结构。
3、B+树索引
B+树就是传统意义上的索引,这是目前关系型数据库中查找为常用和为有效的索引。B+树构造的索引类似于二叉树,根据键值快速(KeyValue)快速找到数据。
有一点需要注意的是,B+树索引并不能找到给定键值具体的行。B+树索引能找到的只是被查找数据行所在的页。然后把页读入到内存中,再在内存中查找,找到查询的目标数据。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。