MySQL中如何实现数据回表查询?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2560个文字,预计阅读时间需要11分钟。
MySQL查询五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。简述:查询,命名含义即返回表中,先通过普通索引扫描出数据所在的行,再通过行主键+ID取出索引中未包含的数据。
MySQL回表
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
一、简述回表,顾名思义就是回到表中,也就是先通过普通索引扫描出数据所在的行,再通过行主键ID 取出索引中未包含的数据。所以回表的产生也是需要一定条件的,如果一次索引查询就能获得所有的select 记录就不需要回表,如果select 所需获得列中有其他的非索引列,就会发生回表动作。即基于非主键索引的查询需要多扫描一棵索引树。
二、InnoDB 引擎有两大类索引要弄明白回表,首先得了解 InnoDB 两大索引,即聚集索引(clustered index)和普通索引(secondary index)。
聚集索引 (clustered index)InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有且只有一个聚集索引。
- 如果表定义了主键,则Primary Key就是聚集索引;
- 如果表没有定义主键,则第一个非空唯一索引(NotNULL Unique)列是聚集索引;
- 否则,InnoDB会创建一个隐藏的row-id作为聚集索引;
普通索引也叫二级索引,除聚簇索引外的索引都是普通索引,即非聚簇索引。
本文共计2560个文字,预计阅读时间需要11分钟。
MySQL查询五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。简述:查询,命名含义即返回表中,先通过普通索引扫描出数据所在的行,再通过行主键+ID取出索引中未包含的数据。
MySQL回表
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
一、简述回表,顾名思义就是回到表中,也就是先通过普通索引扫描出数据所在的行,再通过行主键ID 取出索引中未包含的数据。所以回表的产生也是需要一定条件的,如果一次索引查询就能获得所有的select 记录就不需要回表,如果select 所需获得列中有其他的非索引列,就会发生回表动作。即基于非主键索引的查询需要多扫描一棵索引树。
二、InnoDB 引擎有两大类索引要弄明白回表,首先得了解 InnoDB 两大索引,即聚集索引(clustered index)和普通索引(secondary index)。
聚集索引 (clustered index)InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有且只有一个聚集索引。
- 如果表定义了主键,则Primary Key就是聚集索引;
- 如果表没有定义主键,则第一个非空唯一索引(NotNULL Unique)列是聚集索引;
- 否则,InnoDB会创建一个隐藏的row-id作为聚集索引;
普通索引也叫二级索引,除聚簇索引外的索引都是普通索引,即非聚簇索引。

