关于mysql索引的一些问题

2021/9/4 19:06:16

本文主要是介绍关于mysql索引的一些问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 什么叫聚集索引与普通索引

     聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引

     普通索引的叶子节点存储主键值。

        假设有下表table

        table  (id PK, name KEY, sex, flag);

表中有四条记录:

1, shenjian, m, A

3, zhangsan, m, A

5, lisi, m, A

9, wangwu, f, B   

则该表的聚集索引和普通索引的B+树的数据结构如下图所示。

 如上图左右聚集索引,右为普通索引。从普通索引是无法直接定位到行记录的,只能查询到主键的值。

2.  既然普通索引不能直接插到行的记录,那普通索引的查询过程是怎么样的呢?

      

 

粉红色路径,即为普通索引的查询过程,需要扫码两遍索引树:

(1)先通过普通索引定位到主键值id=5;

(2)在通过聚集索引定位到行记录;

这就是所谓的回表查询,先定位主键值,再定位行记录,它的性能较扫一遍索引树更低。

3.什么是索引覆盖 (Covering index) ?

        只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。



这篇关于关于mysql索引的一些问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程