MySQL原理--索引的原理

原文网址:MySQL原理--索引的原理_IT利刃出鞘的博客-CSDN博客

简介

本文介绍MySQL的索引的原理。

MySQL的索引默认是使用B+树来实现的。

B+ 树索引并不能找到一个给定键值的具体行。B+ 树索引能找到的只是被查找数据行所在的页。然后数据库通过把页读人到内存,再在内存中进行查找,最后得到要查找的数据。 

B+ 树的特点(相对于B 树)

  1. 叶子节点(最底部的节点)才会存放实际数据(索引+记录),非叶子节点只会存放索引;
  2. 所有索引都会在叶子节点出现,叶子节点之间构成一个有序链表;
  3. 非叶子节点的索引也会同时存在在子节点中,并且是在子节点中所有索引的最大(或最小)。
  4. 非叶子节点中有多少个子节点,就有多少个索引;

下面通过三个方面,比较下 B+ 和 B 树的性能区别。

B+ 树对比B树的优点

查询的速度

B+树速度快

B+ 树可以比 B 树更矮胖,查询底层节点的磁盘 I/O次数会更少。因为B+ 树的非叶子节点不存放实际的记录数据,仅存放索引,因此数据量相同的情况下,相比存储即存索引又存记录的 B 树,B+树的非叶子节点可以存放更多的索引。

B树的速度慢

B 树进行单个索引查询时,最快可以在 O(1) 的时间代价内就查到,而从平均时间代价来看,会比 B+ 树稍快一些。

但是 B 树的查询波动会比较大,因为每个节点即存索引又存记录,所以有时候访问到了非叶子节点就可以找到索引,而有时需要访问到叶子节点才能找到索引。

上边只是部分内容,为便于维护,本文已迁移到此地址:MySQL原理-索引的原理 - 自学精灵

  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
回答: MySQL索引原理是通过在表中创建索引来提高查询效率。索引是一种数据结构,它包含了指向实际数据的指针,可以加快数据的查找和访问速度。MySQL中常见的索引类型包括主键索引、普通索引、唯一索引和空间索引等。主键索引是一种特殊的唯一索引,要求键值不能为空。普通索引没有任何限制。联合索引是多个字段创建的索引,使用时遵循最左前缀原则。唯一索引要求索引列中的值必须是唯一的,但允许为空值。空间索引MySQL5.7之后支持的一种索引类型,用于处理空间数据。此外,还有一种特殊的索引叫做聚集索引,它的索引键值的逻辑顺序与表数据行的物理存储顺序一致。\[2\]\[3\]在使用索引时,需要注意一些情况可能导致索引失效,比如查询条件中包含or、字段类型是字符串但没有用引号括起来、like条件中前面带%、联合索引中查询条件列不是第一个列、在索引列上使用MySQL的内置函数或列运算、字符串不加引号、负向查询、使用is null或is not null等。此外,MySQL还有一个优化策略,即当MySQL估计使用全表扫描比使用索引快时,会选择不使用索引。\[1\] #### 引用[.reference_title] - *1* *2* *3* [MySQL 索引原理](https://blog.csdn.net/qq_35958391/article/details/124386023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值