explain模拟优化器执行SQL语句,在5.6以及以后的版本中,除过select,其他比如insert,update和delete均可以使用explain查看执行计划,从而知道mysql是如何处理sql语句,分析查询语句或者表结构的性能瓶颈。 作用 1、表的读取顺序 2、数据读取操作的操作类型 3、哪些索引可以使用 4、哪些索引被实际使用 5、表之间的引用 6
explain select * from t_group where group_name= 'group1'; 2.关联表查询 explain select g.group_id from t_group gleft join t_group_user gu on gu.group_id = g.group_id; 5)range:出现在 in(),between ,> ,<, >= 等操作符中。使用一个索引来查询给定范围的行。 6)index:扫描全表索引(...
table列表示explain的一行正在访问那个张表。 当from子句中有子查询时,table列是格式,表示当前查询依赖id=N的查询,于是先执行id=N的查询。当有union时,UNION RESULT的table列的值为<union1,2>,1和2表示参与union的select行id。 4、type列 type列表示关联类型或访问类型,即MySQL决定如何查询表中的行,查找数据行记...
select_type: SIMPLE table: film type: const possible_keys: PRIMARY key: PRIMARY key_len: 2 ref: const rows: 1 Extra: 1 row in set (0.02 sec) 注释:如果上表中film表中只有一行数据,那么type就是system。 type = NULL,MYSQL不用访问表或者索引就直接能到结果。 mysql> explain select 1 from du...
EXPLAIN SELECT * FROM `user` WHERE id = 1 EXPLAIN 结果中的type)字段 Tips:常见的扫描方式 system:系统表,少量数据,往往不需要进行磁盘IO const:常量连接 eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描 ref:非主键非唯一索引等值扫描 ...
EXPLAINSELECTkey_id,coupon_id,user_coupon_idFROM(SELECTkey_id,coupon_id,user_coupon_idFROMuser_couponsWHEREcoupon_id=123)ASucWHEREcoupon_id=123; select_type 业务中常见的select_type SIMPLE 简单SELECT(不使用UNION或子查询等, 即普通的select) ...
例如分析一条 SELECT 语句sql EXPLAIN SELECT * FROM `user` WHERE id = 1 EXPLAIN 结果中的type字段 Tips:常见的扫描方式system:系统表,少量数据,往往不需要进行磁盘IOconst:常量连接eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描ref:非主键非唯一索引等值扫描range:范围扫描index:索引...
我们在使用SQL语句查询表数据时,提前用explain进行语句分析是一个非常好的习惯。通过explain输出sql的详细执行信息,就可以针对性地进行sql优化。今天我们来分析一下,在explain中11种不同type代表的含义以及其应用场景。1,system 应用场景:表中只有一条数据,且存储引擎可以准确的统计到这条数据。system一般出现在My...
EXPLAINSELECT*FROMs1WHEREkey1IN(SELECTkey1FROMs2)ORkey3='a'; 1. 如果包含子查询的查询语句不能欧转为对应的semi-join 的形式,并且该子查询是相关子查询,则该子查询的第一个 SELECT 关键字代表的那个查询的select_type 就是DEPENDENT SUBQUERY。
range类型: 在查询数据量不同的情况下,不一定走索引,MySQL 优化器会可能会优化成全表扫描 type为all 例如:数据量较小的情况下 ,可以看到是可以走索引的 EXPLAIN SELECT * FROM `t_user` WHERE nn_number > 1000 and nn_number < 145000 1. 例如:数据量较大的情况下,SQL不会走索引 ...