⭐索引
一、什么是索引⭐
- 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。
二、索引的作用⭐
- 索引存在的意义是为了提高查询的效率。例如对于一本书,有很多章节,可以通过目录快速的找到~~
索引就类似于上面的目录,目录就类似于索引~ - 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系;
- 索引所起的作用类似书籍目录,可用于快速定位、检索数据;
- 索引对于提高数据库的性能有很大的帮助;
三、使用场景⭐
- 数据量较大,且经常对这些列进行条件查询;
- 该数据库表的插入操作,及对这些列的修改操作频率较低;
- 索引会占用额外的磁盘空间;
四、索引付出的代价⭐
- 消耗更多的空间;
- 虽然提高了查询速率,但是降低了增加、删除、修改的效率;
插入新的数据,需要既能够插入硬盘的数据,又要调整索引,但是仍然认为,大多数情况下,还是值得用索引的。因为大多数情况下,查询的频率是高于增删改的。
五、索引背后的数据结构⭐
⭐B树
⭐⭐⭐B+树
B+树特征以及和B树的区别:
- B树每个节点N-1个值,分出了N个区间; B+树N个值分成N个区间;
- B树中的值不会重复出现;B+树的值是可能重复出现的;(父元素的值,会在子元素中以最大值/最小值的形式出现);
- 在叶子节点这里,B+树会把所有的叶子节点以链表的形式首尾相连;非常便于范围查找
- 叶子结点是全集数据;非叶子结点,只需要保存索引列; 非叶子结点占用空间非常小(相比较于完整的数据集合),就可以在内存中缓存;
- 因此这个时候的查询就又进一步的减小了硬盘IO;