汽车建设网站开发流程,帮做网站设计与规划作业,中国互联网企业100强,俄语搜索网站概述
explain 关键字可以模拟执行 sql 查询语句#xff0c;输出执行计划#xff0c;分析查询语句的执行性能
使用方式如下#xff1a;explain sql
explain select * from t1执行计划各字段含义
1. id
如果 id 序号相同#xff0c;从上往下执行如果 id 序号不同#…概述
explain 关键字可以模拟执行 sql 查询语句输出执行计划分析查询语句的执行性能
使用方式如下explain sql
explain select * from t1执行计划各字段含义
1. id
如果 id 序号相同从上往下执行如果 id 序号不同序号大先执行如果两种都存在先执行序号大在同级从上往下执行如果显示 NULL最后执行表示结果集并且不需要使用它来进行查询
2. select_type
表示查询的类型取值有如下
SIMPLE简单的 select 查询不包含子查询或者 UNION PRIMARY复杂查询中最外层查询比如使用 union 或 union all 时id 为 1 的记录 select_type 通常是 primary SUBQUERY指在 select 语句中出现的子查询语句结果不依赖于外部查询不在 from 语句中 DEPENDENT SUBQUERY指在 select 语句中出现的查询语句结果依赖于外部查询 DERIVEDderived 称为派生表在 FROM 子句的查询语句表示从外部数据源中推导出来的而不是从 SELECT 语句中的其他列中选择出来的 UNION若第二个 SELECT 出现在 UNION 之后则被标记为 UNION若 UNION 包含在 FROM 子句的子查询中那么第一个 SELECT 将被标记为 DERIVED
UNION RESULTUNION 的结果 DEPENDENT UNION当 union 作为子查询时其中第一个 union 为 dependent subquery第二个 union 为 dependent union 3. table
表示当前行正在访问的表
4. type
表示查询使用的类型性能由好到坏依次是system const eq_ref ref range index all一般来说能达到 range 级别最好能达到 ref 级别
system表只有一行相当于系统表是 const 类型的特例 const针对主键或唯一索引的等值查询扫描只返回一行数据 eq_ref基于主键或唯一索引连接两个表对于每个索引键值只有一条匹配记录被驱动表的类型为 eq_ref这种类型只出现在 join ref非唯一性索引扫描返回匹配多个符合条件的行 range范围扫描检索指定范围的行一般出现在 where 语句出现 between、 、、in 等的查询 index只遍历索引树即可找到匹配的数据比如下例中 user_id 就是 orders 表的索引 all遍历全表找到匹配的数据 5. possible_keys
显示可能使用到的索引实际不一定被使用
6. key
实际使用的索引
7. key_len
索引使用的字节数可通过该列计算查询中使用的索引的长度主要用于联合索引
比如现有 users 表执行以下 sql该表有为 name 和 email 字段设置联合索引 index_name_email
explain select * from users where name 张三 and email xxxqq.com执行结果如下 users 表结构如下 name 和 email 字段都为 varchar一个字符占 3 个字节所以 key_len 50 * 3 2 1 100 * 3 2 455其中 varchar 需要额外占用 2 个字节允许 NULL 值额外占用 1 个字节
据此我们可以得知 index_name_email 中的 name 和 email 字段都被使用了
8. ref
表示哪些列或常量被用于匹配用到的索引 9. rows
根据表统计信息及索引选用情况估算出找到所需的记录所需要读取的行数值越小越好它不是结果集中的行数
10. filtered
表示某个表经过条件过滤之后剩余记录条数的百分比
11. Extra
包含一些重要的额外信息
Using index出现索引覆盖即查询和检索条件的列都在使用的索引里面不需要回表 Using where不通过索引查询需要的数据
下例中 total_price 字段不存在索引 Using index condition表示查询列不被索引覆盖where 条件中是一个索引范围查找过滤完索引后回表找到所有符合条件的数据行 Using filesort当查询包含排序操作又无法利用索引完成排序操作时数据较少在内存排序数据较多则在磁盘排序 Using temporary在做如去重、排序和分组等功能时如果不能有效利用索引就需要建立临时表来完成