本文为本人学习极客时间《MySQL实战45讲》的学习笔记。
原文链接:https://time.geekbang.org/column/article/69236
https://time.geekbang.org/column/article/69636
可以阅读另外一篇文章,对索引底层的数据结构:B+树和B-树有个更深的理解:MySQL索引实现原理
本文目录:
索引的出现是为了提高数据的查询效率,就像书的目录一样。一本500页的书,如果你想快速找到其中的某一个知识点,再不济借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。
1、常见的索引模型
索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里引入索引模型的概念。可以用于提高读写效率的数据结构很多,这里现列举三种常见、简单的数据结构:哈希表、有序数组和二叉搜索树。
1.1 哈希表
哈希表是一种以键 - 值(key-value)存储数据的结构,我们只需要输入待查找的值 key,就可以找到其对应的值即 value。哈希的思路很简单,把值放到数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。
不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值得情况,即哈希冲突。处理这种情况得一种办法就是拉出一个链表。

所以,哈希表这种结构适用于做等值查询的场景,比如:Memcached 及其他一些 NoSQL 引擎。