什么是索引?索引创建原则?索引失效?索引的底层数据结构?B树与B+树的区别?什么是回表查询?什么是覆盖索引?

BOSS攻略 2026-08-26 10:52:40

什么是索引?索引创建原则?索引失效?索引的底层数据结构?B树与B+树的区别?什么是回表查询?什么是覆盖索引?

可以跟上一篇“MySQL内置的InnoDB的索引结构“结合起来看

了解过索引吗?(什么是索引)

索引在项目中非常常见,它是一种帮助MySQL高效获取数据的数据结构,主要用来提高数据检索效率,降低数据库的I/O成本。同时,索引列可以对数据进行排序,降低数据排序的成本,也能减少CPU的消耗。

索引的底层数据结构了解过吗?

MySQL的默认存储引擎InnoDB使用的是B+树作为索引的存储结构。选择B+树的原因包括:节点可以有更多子节点,路径更短;磁盘读写代价更低,非叶子节点只存储键值和指针,叶子节点存储数据;B+树适合范围查询和扫描,因为叶子节点形成了一个双向链表。

B树和B+树的区别是什么呢?

B树和B+树的主要区别在于:

B树的非叶子节点和叶子节点都存放数据,而B+树的所有数据只出现在叶子节点,这使得B+树在查询时效率更稳定。

B+树在进行范围查询时效率更高,因为所有数据都在叶子节点,并且叶子节点之间形成了双向链表。

什么是聚簇索引什么是非聚簇索引?

聚簇索引是指数据与索引放在一起,B+树的叶子节点保存了整行数据,通常只有一个聚簇索引,一般是由主键构成。

非聚簇索引则是数据与索引分开存储,B+树的叶子节点保存的是主键值,可以有多个非聚簇索引,通常我们自定义的索引都是非聚簇索引。

索引创建原则有哪些?

创建索引的原则包括:

表中的数据量超过10万以上时考虑创建索引。

选择查询频繁的字段作为索引,如查询条件、排序字段或分组字段。

尽量使用复合索引,覆盖SQL的返回值。

如果字段区分度不高,可以将其放在组合索引的后面。

对于内容较长的字段,考虑使用前缀索引。

控制索引数量,因为索引虽然可以提高查询速度,但也会影响插入、更新的速度。

什么情况下索引会失效?

索引可能在以下情况下失效:

没有遵循最左匹配原则。

使用了模糊查询且%号在前面。

在索引字段上进行了运算或类型转换。

使用了复合索引但在中间使用了范围查询,导致右边的条件索引失效。

知道什么是回表查询吗?

候选人:回表查询是指通过二级索引找到对应的主键值,然后再通过主键值查询聚簇索引中对应的整行数据的过程。

知道什么叫覆盖索引吗?

候选人:覆盖索引是指在SELECT查询中,返回的列全部能在索引中找到,避免了回表查询,提高了性能。使用覆盖索引可以减少对主键索引的查询次数,提高查询效率。

你接受吗

posted on

2025-11-06 10:39

黑子菜园

阅读(51)

评论(0)

收藏

举报