mysql索引结构及其原理

1、定义 索引是一种数据结果,帮助提高获取数据的速度 为了提高查找速度,有很多查询优化算法。但是每种查找算法都只能应用于特定数据结构之上。 索引就是数据库创建的满足特定查找算法的数...

1、定义

索引是一种数据结果,帮助提高获取数据的速度

为了提高查找速度,有很多查询优化算法。但是每种查找算法都只能应用于特定数据结构之上。

索引就是数据库创建的满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据

2、目前大部分数据库系统及文件系统都采用B Tree或其变种B+Tree作为索引结构

3、为什么使用B Tree(B+Tree)

红黑树也可用来实现索引,但是文件系统及数据库系统普遍采用B/+Tree,何也?

一般来说,索引本身也很大,不可能全存内存,往往以索引文件的形式存在磁盘

索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。

换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数

4、MyISAM索引实现

MyISAM引擎使用B+Tree作为索引结构,叶节点data域存放数据记录的地址

MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

MyISAM的索引方式也叫做“非聚集”的,之所以这么称呼是为了与InnoDB的聚集索引区分

5、InnoDB索引实现

InnoDB的数据文件本身就是索引文件

表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引

叶节点包含了完整的数据记录。这种索引叫做聚集索引。

出处:https://cloud.tencent.com/developer/article/1125452

  • 发表于 2019-04-22 18:00
  • 阅读 ( 170 )
  • 分类:网络文章

条评论

请先 登录 后评论
不写代码的码农
小编

篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除