Featured image of post MySQL 笔记

MySQL 笔记

为什么两次快照读之间存在当前读,ReadView会重新生成?

MyISAM 和 InnoDB 的区别是什么? 提示:最少有五点

数据库表设计时,如何选择字段?

为什么要设计索引?

索引(Index)是数据库中的一个重要概念,它是一种特殊的数据结构,提高了数据库系统的查询性能和效率。设计索引的主要目的是为了优化数据库表的查询操作,对于大型的数据表,可以使用索引来提高查询速度,减少系统的资源消耗。

具体来说,索引可以帮助数据库系统实现以下两点:

  1. 快速定位数据:索引可以按照某种特定的列或一组列建立,通过对这些列进行排序和分组,使得系统在查询时可以快速定位到需要的记录,而不必扫描整个表格,大大提高了查询效率。

  2. 避免重复计算:当进行复杂的查询操作时,经常会涉及多个表之间的关联,使用索引可以在关联时减少重复计算的情况,同时提高查询效率。

总的来说,设计索引是为了提高查询效率、优化查询计划,提高系统的响应速度和性能,并且能够提高系统的稳定性和可靠性。但是需要注意的是,过多的索引也可能会影响数据的插入、修改和删除的性能,因此在设计索引时需要针对具体业务场景和查询需求进行考虑和优化。

如何设计索引?

MySQL 的 InnoDB 存储引擎为什么选择 B+ 树实现索引而不选择 B 树

MySQL 的 InnoDB 存储引擎采用的是 B+ 树实现索引,而不选择 B 树的原因主要有以下几点:

  1. 磁盘 I/O 性能更高:B+ 树中只有叶子节点存储了数据记录,内部节点只存储索引信息,因此每个节点可以存储更多的索引信息,从而降低了磁盘 I/O 的次数,提高了查询性能。

  2. 范围查询效率更高:由于 B+ 树的所有数据记录都存储在叶子节点,因此当进行范围查询时,只需要遍历叶子节点即可,而 B 树由于存在非叶子节点存储数据记录,因此需要遍历更多的节点,导致效率降低。

  3. 方便实现聚簇索引:聚簇索引是一种特殊的索引方式,它会将表中的数据记录和索引文件存储在同一个 B+ 树中。这种设计减少了磁盘 I/O 操作,从而提高了数据库的查询性能。

举例来说,假设有一个数据表存储了学生的成绩信息,其中成绩作为关键字创建了一个索引。如果使用 B+ 树实现索引,成绩数据只会存储在叶子节点上,而 B 树则可能会将部分数据记录存储在非叶子节点上。在查询某个成绩范围内的学生信息时,由于 B+ 树只需要遍历叶子节点,因此效率更高。

总的来说,B+ 树相比 B 树具有更好的查询性能和范围查询效率,能够更好地适应大数据量、高并发的场景。而且 B+ 树还便于实现聚簇索引,可以进一步提高数据库的查询性能。

InnoDB 存储引擎是否支持 Hash 索引

InnoDB 支持的是自适应 Hash 索引,由系统

Licensed under CC BY-NC-SA 4.0
最后更新于 2023/05/23 16:43:06
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计