通过explain 语句可以帮助我们查看查询语句的具体执行计划,那么在执行计划中的 type 列表示 MySQL 是如何查找对应的数据了,我们先来说一下执行计划中 type 列常见的值 这里主要说一下常见的几种:const、ref、range、index,性能从左到右逐渐变差 首先,const 的话表示性能是常量级的,非常快 就比如对于 SQL 语句:sel...
select_type:表示 SELECT 的类型,常见的取值有 SIMPLE(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、 UNION(UNION 中的第二个或者后面的查询语句)、SUBQUERY(SELECT/WHERE之后包含了子查询)等 type:表示连接类型,性能由好到差的连接类型为NULL、system、const、eq_ref、ref、range、 index、...
mysql5.7中type的类型达到了14种之多,这里只记录和理解最重要且经常遇见的六种类型,它们分别是all,index,range,ref,eq_ref,const。从左到右,它们的效率依次是增强的。撇开sql的具体应用环境以及其他因素,你应当尽量优化你的sql语句,使它的type尽量靠右,但实际运用中还是要综合考虑各个方面的。 接下来,为了演示和...
ALL < index < range < index_subquery < unique_subquery < index_merge < ref_or_null < fulltext < ref < eq_ref < const < system。 0、测试环境简述 本文MySQL 实例版本为 5.7,表存储引擎为 InnoDB 数据库t中有两张表user、user_captcha,每张表中有2W+条数据,下面是两张表的建表语句(表结构只...
type 显示关联类型或访问类型,这个是非常重要的字段,也是我们判断一个SQL执行效率的主要依据,我们来详细看一下。 依次从最优到最差分别为:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ...
首先,type列的关键性不容小觑。MySQL会根据执行查询的方式将查询分为不同的类型,最常见的包括const、eq_ref、ref、range以及index等,每种类型都对应不同的性能表现。在处理复杂JOIN查询时,这些类型的理解能够帮助我们识别出潜在的性能瓶颈,并采取适当的优化措施。
4. TYPE 为 'range': 探索区间的风险 当你见到 type 为 'range' 时,它表示的是范围扫描,通常建议用常量替代,以提高查询性能。考虑这个例子: sql SELECT * FROM t1 WHERE f0 < 120; 5. TYPE 为 'index': 覆盖索引的魔力 最后是 'index',也可解释为覆盖索引扫描,没有过滤条件的索引扫描。举个例子,想要...
5、type = range ,索引范围扫描,常见于<、<=、>、>=、between等操作符 eg: EXPLAIN SELECT t.* FROM trader_quota_match t WHERE t.match_hour <= 1 6、type = index,索引全扫描,MySQL遍历整个索引来查找匹配的行。 eg: EXPLAIN SELECT t1.policy_code,t1.policy_name FROM trader_quota_match t1,sys...
首先是select_type:将select查询分为简单(simple)和复杂两种类型 复杂类型又分为子查询(subquery)和from列表中包含子查询(drived) simple:drived: 就type进行详细的介绍: System,const,eq_ref,ref,range,index,all all : 即全表扫描 index : 按索引次序扫描,先读索引,再读实际的行,结果还是全表扫描,主要优点...