0
点赞
收藏
分享

微信扫一扫

01 MySql索引简介

代码小姐 2023-08-31 阅读 47

索引是什么(重点)

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构

索引的本质:索引是数据结构。

索引的目的:在于提高查询效率。

简单理解: 索引是排好序的快速查找数据结构。

详 解 ( 重 要 ) 
在 数 据 之 外 , 数 据 库 系 统 还 维 护 着 满 足 特 定 查 找 算 法 的 数 据 结 构 , 这 些 数 据 结 构 以 某 种 方 式 引 用 ( 指 向 ) 数 据 , 
这 样 就 可 以 在 这 些 数 据 结 构 上 实 现 高 级 查 找 算 法 。 这 种 数 据 结 构 , 就 是 索 引 。 下 图 就 是 一 种 可 能 的 索 引 方 式 示 例 : 
( 0 以 
( 0 | 2 
34 
0 × 07 
1 
0 × 56 
2 
0 × 6A 
3 
22 
0 × F3 
4 
0 四 0 
5 
5 
23 
77 
91 
0 × 77 
6 
0 × DI 
7 
左 边 是 数 据 表 , 一 共 有 两 列 七 条 记 录 , 最 左 边 的 是 数 据 记 录 的 物 理 地 址 
为 了 加 快 C 2 的 查 找 , 可 以 维 护 一 个 右 边 所 示 的 二 叉 查 找 树 , 每 个 节 点 分 别 包 含 索 引 键 值 和 一 个 指 向 对 应 数 据 记 录 物 理 地 
址 的 指 针 , 这 样 就 可 以 运 用 二 叉 查 找 在 广 定 的 复 杂 度 内 获 取 到 相 应 数 据 , 从 而 快 速 的 检 索 出 符 合 条 件 的 记 录 。

  • 二叉树弊端之一:二叉树很可能会发生两边不平衡的情况。
  • B-TREE:(B:balance) 会自动根据两边的情况自动调节,使两端无限趋近于平衡状态。可以使性能最稳定。(myisam使用的方式)
  • B-TREE弊端:(插入/修改操作多时,B-TREE会不断调整平衡,消耗性能)从侧面说明了索引不是越多越好。
  • B+TREE:Innodb 所使用的索引。

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

我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈稀索引(hash index)等。

索引的优势

  • 类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本
  • 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

索引的劣势

  • 实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的。
  • 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。
  • 索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句
举报

相关推荐

0 条评论