Mysql覆盖索引与回表查询

本文介绍了MySQL的覆盖索引和回表查询的概念,解释了聚集索引和辅助索引的工作原理。通过示例展示了如何通过索引优化查询性能,强调了覆盖索引在提高查询速度和减少I/O上的优势,并提到了使用覆盖索引的限制和注意事项。测试结果显示,合理利用覆盖索引可以显著提升大数据量查询的效率。
摘要由CSDN通过智能技术生成

1.什么是覆盖索引和回表查询

首先,我们看看mysql的索引类型,mysql包括两种索引类型,聚集索引和非聚集索引:

聚集索引(主键索引):

           聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。

           聚集索引的叶子节点称为数据页,聚集索引的这个特性决定了索引组织表中的数据也是索引的一部分。

辅助索引(二级索引):

           非主键索引,叶子节点=键值+书签。Innodb存储引擎的书签就是相应行数据的主键索引值。

 

关于聚集索引说明如下:

  • 每个表必须且只能有一个聚集索引,如果设置主键,那么主键就是聚集索引
  • 非聚集索引,比如普通索引,都是通过B+ tree的检索后,叶子节点包含主键id,再去聚集索引寻找记录,因为聚集索引的叶子节点,包含所有行记录信息
  • 如果没有设置聚集索引,mysql会默认生成rowid作为聚集索引

说到这里,我们来看什么是覆盖索引和回表查询,比如下面的表结构:

create table `t_member` ( `id` int (11), `member_no` varchar (36), `user_name` 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值