mysql 主键索引和普通索引的区别

本文详细介绍了主键索引和普通索引在数据存储上的差异,主键索引的叶子节点存储完整行数据,而普通索引存储主键值。在查询过程中,主键查询只需搜索一次,而非主键查询可能需要回表。讨论了索引覆盖的概念,指出当查询字段完全匹配索引时,可以避免回表操作,提高查询效率。
摘要由CSDN通过智能技术生成

 

主键索引和普通索引的区别:
https://www.cnblogs.com/heishuichenzhou/p/10813463.html

 

 

 

例如对于下面这个表(其实就是上面的表中增加了一个k字段),且ID是主键。

 

主键索引和非主键索引的示意图如下:

 

其中R代表一整行的值。

从图中不难看出,主键索引和非主键索引的区别是:非主键索引的叶子节点存放的是主键的值,而主键索引的叶子节点存放的是整行数据,其中非主键索引也被称为二级索引,而主键索引也被称为聚簇索引

根据这两种结构我们来进行下查询,看看他们在查询上有什么区别。

1、如果查询语句是 select * from table where ID = 100,即主键查询的方式,则只需要搜索 ID 这棵 B+树。

2、如果查询语句是 select * from table where k = 1,即非主键的查询方式,则先搜索k索引树,得到ID=100,再到ID索引树搜索一次,这个过程也被称为回表。

现在,知道他们的区别了吧?

 

 


主键索引的叶子结点存放了整行记录,普通索引的叶子结点存放了主键ID,查询的时候需要做一次回表查询
一定要回表查询么?

 

 


不一定,当查询的字段刚好是索引的字段或者索引的一部分,就可以不用回表,这也是索引覆盖的原理
阅读:
mysql覆盖索引详解:
https://blog.csdn.net/jh993627471/article/details/79421363

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值