MySQL中如何实现数据回表查询?

2026-05-25 15:482阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2560个文字,预计阅读时间需要11分钟。

MySQL中如何实现数据回表查询?

MySQL查询五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。简述:查询,命名含义即返回表中,先通过普通索引扫描出数据所在的行,再通过行主键+ID取出索引中未包含的数据。

MySQL回表

    五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。

一、简述

回表,顾名思义就是回到表中,也就是先通过普通索引扫描出数据所在的行,再通过行主键ID 取出索引中未包含的数据。所以回表的产生也是需要一定条件的,如果一次索引查询就能获得所有的select 记录就不需要回表,如果select 所需获得列中有其他的非索引列,就会发生回表动作。即基于非主键索引的查询需要多扫描一棵索引树。

二、InnoDB 引擎有两大类索引

要弄明白回表,首先得了解 InnoDB 两大索引,即聚集索引(clustered index)和普通索引(secondary index)。

聚集索引 (clustered index)

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

  • 如果表定义了主键,则Primary Key就是聚集索引;
  • 如果表没有定义主键,则第一个非空唯一索引(NotNULL Unique)列是聚集索引;
  • 否则,InnoDB会创建一个隐藏的row-id作为聚集索引;
普通索引(secondary index)

普通索引也叫二级索引,除聚簇索引外的索引都是普通索引,即非聚簇索引。

阅读全文

本文共计2560个文字,预计阅读时间需要11分钟。

MySQL中如何实现数据回表查询?

MySQL查询五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。简述:查询,命名含义即返回表中,先通过普通索引扫描出数据所在的行,再通过行主键+ID取出索引中未包含的数据。

MySQL回表

    五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。

一、简述

回表,顾名思义就是回到表中,也就是先通过普通索引扫描出数据所在的行,再通过行主键ID 取出索引中未包含的数据。所以回表的产生也是需要一定条件的,如果一次索引查询就能获得所有的select 记录就不需要回表,如果select 所需获得列中有其他的非索引列,就会发生回表动作。即基于非主键索引的查询需要多扫描一棵索引树。

二、InnoDB 引擎有两大类索引

要弄明白回表,首先得了解 InnoDB 两大索引,即聚集索引(clustered index)和普通索引(secondary index)。

聚集索引 (clustered index)

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

  • 如果表定义了主键,则Primary Key就是聚集索引;
  • 如果表没有定义主键,则第一个非空唯一索引(NotNULL Unique)列是聚集索引;
  • 否则,InnoDB会创建一个隐藏的row-id作为聚集索引;
普通索引(secondary index)

普通索引也叫二级索引,除聚簇索引外的索引都是普通索引,即非聚簇索引。

阅读全文