数据库索引
2021/7/22 2:07:16
本文主要是介绍数据库索引,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 索引的目的:
索引好比书的目录,是为了加快查找的效率,如果数据库没有索引,需要把整个表遍历一遍如果针对顺序表查找,顺序表在内存中,内存的访问速度快,并且数据也没那么多,速度也还行,但是针对数据库表顺序查找,数据库的数据是在磁盘上,磁盘的访问速度更慢,并且数据量很多,处理速度会更慢。索引就是为了避免数据库进行顺序查找,提高查找效率
- 索引可以考虑的数据结构
①哈希表
缺点:只能处理相等的情况,不能处理其他逻辑。比如查找id<6并且id》3的学生信息
②二叉树
优点:能处理范围查找(二叉搜索树内部是有序的,可以按照二叉搜索树的典型搜索方式)
缺点:
二叉搜索树每个节点两个叉,当数据量比较大的时候,树的高度就会很高,最终的效率也会很低
二叉搜索树直接获取到中序遍历也不是很高效
③B+树(真实的索引结构)
首先看一下B树
和二叉树的差异:
- 每个节点不是二叉了,而实N叉
- 每个节点不是存储一个数据了,而是存多个数据
存的数据的个数+1=节点的度
优点:
- 就是一个N分查找,效率比二分还高
- 每个节点存放了多个数据,每个节点又有多个度,和二叉树相比,在保存相同个数的元素时,B树的高度会比二叉树低很多
- 范围查找更容易
B+树
和B树相比的变化
- 每一层的叶子都连接到一起了
- 数据只存在叶子节点上,非叶子节点只保存一些辅助查找的边界信息
数据:保存的数据库表中的一行
非叶子节点只保存了id,辅助想要找到想要的id 对应的节点
优点:
1.查询任何一条记录的速度都是比较平均的,不会出现效率差异大的情况
2.不需要进行额外的中序遍历了,遍历链表就是得到中序结果,范围查找效率更高
3.叶子放到磁盘上,非叶子放到内存中,查找效率更高(减少读取磁盘的次数)
4.索引在内存中占用的实际开销也不高
5.非叶子的查找是在内存中,叶子的查找在磁盘上
缺点:
加快查找效率,减慢出入删除修改效率(因为要同步修改索引结构)
索引也会占用额外空间(使用空间来换时间)
这篇关于数据库索引的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Maven资料入门指南
- 2024-11-16Maven资料入门教程
- 2024-11-16MyBatis Plus资料:新手入门教程与实践指南
- 2024-11-16MyBatis-Plus资料入门教程:快速上手指南
- 2024-11-16Mybatis资料入门教程:新手必看指南
- 2024-11-16MyBatis资料详解:新手入门与初级实战指南
- 2024-11-16MyBatisPlus资料:初学者入门指南与实用教程
- 2024-11-16MybatisPlus资料详解:初学者入门指南
- 2024-11-16MyBatisX资料:新手入门与初级教程
- 2024-11-16RESTful接口资料详解:新手入门指南