暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

type访问方法类型

原创 小气鬼 2022-12-30
562

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论