table列表示explain的一行正在访问那个张表。 当from子句中有子查询时,table列是格式,表示当前查询依赖id=N的查询,于是先执行id=N的查询。当有union时,UNION RESULT的table列的值为<union1,2>,1和2表示参与union的select行id。 4、type列 type列表示关联类型或访问类型,即MySQL决定如何查询表中的行,查找数据行记...
简单的SELECT语句(不包括UNION操作或子查询操作) (2)PRIMARY/UNION PRIMARY:查询中最外层的SELECT(如两表做UNION或者存在子查询的外层的表操作为PRIMARY,内层的操作为UNION) UNION:UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句没有依赖关系) (3)DEPENDENT UNION/UNIOIN RESULT DEPENDENT UNIO...
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了:如:explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释:table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示 MySQL ...
6.type示例 执行效率 system > const > eq_ref > ref > range > index > ALL。 在mysql 8上system没有实验出来,有实验出来的同学欢迎留言,谢谢。 --[index]EXPLAINSELECTcount(1)FROMdept t;--[const]EXPLAINSELECT*FROMdept tWHEREt.id=1;--[range]EXPLAINSELECT*FROMdept tWHEREt.parentId<3and t....
EXPLAIN执行计划中type字段分为以下几种(性能从最好到最差): 1、type = NULL,MYSQL不用访问表或者索引就直接能到结果。 eg:explainselect*fromtrader_quota_match tWHEREt.match_hourISNULL; 2、type = const/system,单表中最多只有一条匹配行,查询起来非常迅速。
例如分析一条 SELECT 语句sql EXPLAIN SELECT * FROM `user` WHERE id = 1 EXPLAIN 结果中的type字段 Tips:常见的扫描方式system:系统表,少量数据,往往不需要进行磁盘IOconst:常量连接eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描ref:非主键非唯一索引等值扫描range:范围扫描index:索引...
1、type=ALL,全表扫描,MySQL遍历全表来找到匹配行 一般是没有where条件或者where条件没有使用索引的查询语句 EXPLAIN SELECT * FROM customer WHERE active=0; 2、type=index,索引全扫描,MySQL遍历整个索引来查询匹配行,并不会扫描表 一般是查询的字段都有索引的查询语句 ...
range类型: 在查询数据量不同的情况下,不一定走索引,MySQL 优化器会可能会优化成全表扫描 type为all 例如:数据量较小的情况下 ,可以看到是可以走索引的 EXPLAIN SELECT * FROM `t_user` WHERE nn_number > 1000 and nn_number < 145000 1. 例如:数据量较大的情况下,SQL不会走索引 ...
我们在使用SQL语句查询表数据时,提前用explain进行语句分析是一个非常好的习惯。通过explain输出sql的详细执行信息,就可以针对性地进行sql优化。今天我们来分析一下,在explain中11种不同type代表的含义以及其应用场景。1,system 应用场景:表中只有一条数据,且存储引擎可以准确的统计到这条数据。system一般出现在My...