MySQL 索引学习笔记
该文为《 MySQL 实战 45 讲》的学习笔记,感谢查看,如有错误,欢迎指正 一、索引简介 索引就类似书本的目录,作用就是方便我们更加快速的查找到想要的数据。 索引的实现方式比较多,常见的有 哈希表 , 有序数组 , 搜索树 。 1.1 哈希表 哈希表 是将数据以 key-value 的形式存储起来,简单来说就是将 key 通过哈希函数换算成数组中的一个确定的位置,将 value 存到这个位置去。当 key 比较多时,有可能换算出相同的位置,此时可以通过链表来解决。在查询时先找到位置,再对该位置的多个 value 进行遍历。 哈希表适合用于等值查询 ,由于是无序的,不适合用来做区间查询。 1.2 有序数组 有序数组 在等值查询和区间查询上效率都很高。由于是有序的,可以通过二分法快速得到结果。也支持范围查询。但是也有一个缺点,如果要在中间插入一个数据,那么后面的所有记录都要向后挪一位,成本太高了。 因此, 有序数组只适用于静态存储引擎 。 例如我们要保存2019年的出生人口信息,就适合用有序数组。 1.3 搜索树 常见的搜索树有 二叉 ,也有 多叉 。 二叉树 的特点是: 每个节点的左儿子小于父节点,父节点又小于右儿子。 多叉树 的特点是: 每个节点有多个儿子,儿子之间的大小保证从左到右递增。 由于索引不止存在内存中,还会写到磁盘上,而读磁盘越多,查询效率越慢