MySql主键索引和非主键索引/聚簇索引和非聚簇索引

2023-11-15 08:30:59

数据和索引是否在一起?

1. 主键索引的叶子节点存的是整行数据。 在InnoDB里, 主键索引也被称为聚簇索引(clustered
index) 。
2. 非主键索引的叶子节点内容是主键的值。 在InnoDB里, 非主键索引也被称为二级索引
(secondaryindex) 。

根据上面的索引结构说明, 我们来讨论一个问题: 基于主键索引和普通索引的查询有什么区别?

如果语句是select * from Twhere ID=500, 即主键查询方式, 则只需要搜索ID这棵B+树;
如果语句是select * from Twhere k=5, 即普通索引查询方式, 则需要先搜索k索引树, 得到ID
的值为500, 再到ID索引树搜索一次。 这个过程称为回表。

也就是说, 基于非主键索引的查询需要多扫描一棵索引树。 因此, 我们在应用中应该尽量使用主
键查询

  • 作者:价值成长
  • 原文链接:https://blog.csdn.net/xd592319702/article/details/126747278
    更新时间:2023-11-15 08:30:59