type 表明了这个访问方法/访问类型是个什么,结果值从最好到最坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
出现比较多的是 system>const>eq_ref>ref>range>index>ALL
const:
根据主键或者唯一二级索引列与常数进行等值匹配时,对单表的 访问方法就是 const。因为只匹配一行数据,所以很快
例如:
EXPLAIN SELECT * FROM t1 where id=4
const,意思是常数级别的,代价是可以忽略不计的。不过这种 const 访问方法只能在主键列或者唯一二级索引列和一个常数进行 等值比较时才有效,如果主键或者唯一二级索引是由多个列构成的话,组成索引 的每一个列都是与常数进行等值比较时,这个 const 访问方法才有效。
eq_ref
在连接查询时,如果被驱动表是通过主键或者唯一二级索引列等值匹配的 方式进行访问的〈如果该主键或者唯一二级索引是联合索引的话,所有的索引列 都必须进行等值比较),则对该被驱动表的访问方法就是 eq_ref
说明:驱动表与被驱动表:A 表和 B 表 join 连接查询,如果通过 A 表的结果集作为 循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到 B 表中查 询数据,然后合并结果。那么我们称 A 表为驱动表,B 表为被驱动
ref
当通过普通的二级索引列与常量进行等值匹配时来查询某个表,那么对该 表的访问方法就可能是 ref。 本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能 会找到多个符合条件的行,所以他属于查找和扫描的混合体
说明:ref和eq_ref区别,一个是主键或者唯一二级索引的情况,一个是普通索引的情况
range
如果使用索引获取某些范围区间的记录,那么就可能使用到range访问方法, 一般就是在你的 where 语句中出现了 between、、in 等的查询。 这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点, 而结束语另一点,不用扫描全部索引。
index
当我们可以使用索引覆盖,但需要扫描全部的索引记录时,该表的访问方法 就是 index。
EXPLAIN SELECT create_time FROM t1 WHERE order_status =1
all
最熟悉的全表扫描,将遍历全表以找到匹配的行
最后修改时间:2022-12-30 08:26:34
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
943次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
562次阅读
2025-04-25 15:30:58
墨天轮个人数说知识点合集
JiekeXu
454次阅读
2025-04-01 15:56:03
MySQL数据库当前和历史事务分析
听见风的声音
434次阅读
2025-04-01 08:47:17
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
374次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
362次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
337次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
311次阅读
2025-04-07 12:14:29
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
209次阅读
2025-04-15 15:27:53
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
186次阅读
2025-04-01 16:20:44