数据库系列课程(17)-索引实现原理(小结)

简介: 数据库系列课程(17)-索引实现原理(小结)

引言

什么是索引?

答:是帮助MySQL高效获取数据的数据结构。

什么是全表扫描

答:是将整张表扫描一遍,效率非常低。

本文言简意赅的总结索引的几种实现原理:

  • hash算法
  • 平衡二叉树(AVL树)
  • B树实现
  • B+树实现(MyISAM和InnoDB使用)

hash算法

原理:根据某一列(如userName)创建索引。

优点:查找可以根据key进行访问,效率非常高。

缺点:不能进行范围查询(因为无法比较大小)。

其它:映射函数叫散列函数,存放记录数组叫散列表。

平衡二叉树(AVL树)

原理:取一中间值,中间值左边称为作为左子树,右边称为右子树,左子树比中间值小,右子树比中间值大。

优点:使用的是折半查询,与二叉树查询相同,效率非常高。

缺点:支持范围查询,但是需要回旋。

B树

原理:可以知道平衡二叉树越高,IO次数越多,B树的出现就是为了减少二叉树的高度的。

优点:B树节点元素比平衡二叉树多,效率比平衡二叉树高。

缺点:范围查询需要回旋。

B+树

原理:集成B树,有叶子节点和非叶子节点,非叶子节点只包含Key,叶子节点包含key和value。

优点:B+树的出现就是为了解决范围查询问题,减少IO的操作,它继承了B树的特性,解决了回旋的问题。

缺点:因为冗余节点数据,比较占硬盘大小。

目录
相关文章
|
27天前
|
监控 NoSQL MongoDB
MongoDB数据库的索引管理技巧
【8月更文挑战第20天】MongoDB数据库的索引管理技巧
42 1
|
1月前
|
数据库 索引
如何优化数据库索引?
【8月更文挑战第14天】如何优化数据库索引?
47 4
|
29天前
|
存储 安全 数据库
数据库的索引都有哪些类型?如何选择?
【8月更文挑战第17天】数据库的索引都有哪些类型?如何选择?
38 0
|
2天前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
2天前
|
前端开发 应用服务中间件 API
|
22天前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
50 5
|
23天前
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
42 6
|
20天前
|
数据库 索引
数据库索引的作用和优点缺点
【8月更文挑战第27天】创建索引能显著提升系统性能,确保数据唯一性,加快检索速度,加速表间连接及优化分组排序过程。然而,过度使用索引会导致创建与维护成本增加、占用更多物理空间并降低数据维护效率。因此,在创建索引时需谨慎评估需求及影响。
27 2
|
21天前
|
数据库 索引
数据库索引的作用和优点缺点
创建索引能显著提升系统性能,确保数据唯一性,加快检索速度,加速表间连接及优化分组排序过程。然而,过度使用索引会导致创建与维护成本增加、占用更多物理空间并降低数据维护效率。因此,在创建索引时需谨慎评估需求及影响。
25 2
|
24天前
|
监控 数据库 索引
如何优化数据库索引?
【8月更文挑战第23天】如何优化数据库索引?
36 4