索引的数据结构

简介: 索引的数据结构

公众号merlinsea


索引的目的


   提⾼查询效率,可以类⽐字典,如果要查“mysql”这个单词,我们肯定需要定位到m字⺟,然后从下往下找到y字⺟,再找到剩下的sql 索引设计的核心目的是将原本随机乱序的数据按照一定顺序组织起来,这样在检索到一个值的时候可以快速判断是否需要继续检索。


常见的索引设计方案


   1、数组索引:数组索引可以知道查询的时间复杂度是O(n),如果数据量特别大的情况下是不适合的。

 

    2、二叉查找树索引:1、二叉查找树索引的时间复杂度是O(log2n) 2、二叉查找树每个节点只能存一个数据,因此如果数据量足都大的话二叉查找树的层数也会比较高 3、如果需要检索一个范围的话,比如查找[5,12]范围的数据需要递归回溯,查询比较麻烦。

640.jpg

 3、hash索引:hash索引本质上是不连续的,即如果是模糊查询或者范围查询的话效率会比较低,但等值查询效率接近常数级别。

   

   4、B树索引:B树本质上就是一个多叉查找树,所有的节点都存放数据 优点:相比于二叉查找树,B树的高度比二叉树要低 缺点:如果是范围查询,B树也需要回溯查询。


640.jpg


  5、B+树索引:

   B+树在B树上做的改进:1、所有的非叶子节点不再存数据data,非叶子节点只存key值,只有叶子节点才存data 2、所有的叶子节点都增加了指向下一个叶子节点的指针

   优点:1、对于范围查询不需要递归回溯进行查找,直接找到第一个节点之后顺序遍历即可。2、非叶子节点不存data的优势是可以将非叶子节点的部分加载进内存,查询更快 3、B+树是mysql索引采用的底层数据结构。


640.jpg


相关文章
|
8月前
|
存储 算法 关系型数据库
深入理解InnoDB索引数据结构和算法
1. **索引定义**:索引是提升查询速度的有序数据结构,帮助数据库系统快速找到数据。 2. **索引类型**:包括普通索引、唯一索引、主键索引、空间索引和全文索引,每种有特定应用场景。 3. **数据结构**:InnoDB使用B+树作为索引结构,确保所有节点按顺序排列,降低查询时的磁盘I/O。 4. **B+树特性**:所有数据都在叶子节点,非叶子节点仅存储索引,提供高效范围查询。 5. **索引优势**:通过减少查找数据所需的磁盘I/O次数,显著提高查询性能。 **总结:**InnoDB索引通过B+树结构,优化了数据访问,使得查询速度快,尤其适合大数据量的场景。
445 0
深入理解InnoDB索引数据结构和算法
|
8月前
|
存储 关系型数据库 MySQL
7. 索引的底层数据结构了解过嘛 ?
了解MySQL存储引擎,主要对比了MyISAM和InnoDB。MyISAM支持256TB数据,无事务和外键支持;InnoDB支持64TB数据,提供事务和外键功能。
43 0
|
8月前
|
存储 搜索推荐 关系型数据库
深度探讨数据库索引的数据结构及优化策略
深度探讨数据库索引的数据结构及优化策略
|
8月前
|
存储 NoSQL 关系型数据库
索引的三种常见底层数据结构以及优缺点
索引的三种常见底层数据结构以及优缺点
|
8月前
|
存储 关系型数据库 MySQL
为什么MySQL用B+树做索引而不使用其他的数据结构呢?
为什么MySQL用B+树做索引而不使用其他的数据结构呢?
|
8月前
|
存储 SQL 关系型数据库
MySQL - 深入解析MySQL索引数据结构
MySQL - 深入解析MySQL索引数据结构
|
8月前
|
SQL 算法 关系型数据库
【MySQL】索引介绍、索引的数据结构
【MySQL】索引介绍、索引的数据结构
78 0
|
8月前
|
存储 SQL 关系型数据库
MySQL 底层数据结构 聚簇索引以及二级索引 Explain的使用
MySQL 底层数据结构 聚簇索引以及二级索引 Explain的使用
77 0
|
8月前
|
存储 关系型数据库 数据库
7. 索引的底层数据结构了解过嘛 ?
了解数据库索引吗?不同存储引擎索引实现各异。MyISAM和InnoDB仅支持B+ TREE索引,而MEMORY/HEAP引擎则兼容HASH和BTREE。
38 0
|
8月前
|
算法 关系型数据库 MySQL
为什么mysql索引使用B+Tree数据结构
为什么mysql索引使用B+Tree数据结构
66 0