mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)

本文对比了全索引扫描和全表扫描两种数据访问方式的性能特点,讨论了它们在不同数据存储位置下的优劣,并提供了如何选择合适扫描方式的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

full index scan:全索引扫描,查询时,遍历索引树来获取数据行。如果数据不是密集的会产生随机IO
在执行计划中是Type列,index


full table scan:通过读物理表获取数据,顺序读磁盘上的文件。这种情况会顺序读磁盘上的文件。
在执行计划中是Type列,all


covering index:覆盖索引,如果where条件的列和返回的数据在一个索引中,那么不需要回查表,那么就叫覆盖索引。
在执行计划中是extra那一列,using index


full index scan  vs full table scan
全索引扫描并不一定就比全表扫描好,取决于数据存储位置。
如果数据在内存,那么这两种没有太大区别。
如果数据在磁盘,全表扫描比全索引扫描要好,这是因为,全表扫描是顺序读数据,sequential read,是顺序IO

而全索引扫描,可能会产生随机读(reandom read),随机IO,显然,顺序读要比随机读快很多。


查看执行计划的样例






评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值