sql执行计划需要关注那些内容?

执行explain会返回那些字段(加粗标红为主要关注字段)?

1、id:执行计划中每个操作的唯一标识,多表联查的时候会出现多条数据id是一样的

2、select_type:查询类型,常见类型有:SIMPLE、PRIMARY、UNION、SUBQUERY

3、table:涉及到的表

4、partitions:涉及到的分区

5、type查询时使用到的索引类型:system、const、eq_ref、ref、range、index、ALL

6、possible_keys:可能被查询优化器使用到的索引

7、key查询优化器选择的索引

8、key_len:索引长度

9、ref:索引的那一列被使用

10、rows:需要扫描的行数,就是此次查询需要扫描多少行得到结果

11、filtered:按表条件过滤的行百分比

12、Extra额外信息

三个关键字段解析:

type索引类型解析:

1、system:系统表

2、const:常数索引

3、eq_ref:唯一索引,只扫描索引树种的一个一个匹配行

4、ref:非唯一索引,只扫描索引树种一部分数据来查找匹配行

5、range:范围索引,只扫描索引树种的一个范围来查找匹配的行

6、index:全索引扫描,遍历索引树

7、ALL:全表扫描

按照序号排列,效率由快到慢

key:

实际使用到的索引,正常使用到了索引,则显示索引名称

Extra:

Using where:

表示使用了where过滤,过滤条件字段无索引。

Using index:

使用了覆盖索引,只需要扫描索引,无需回表检索

Using where;Using index

查询的列被索引覆盖,where筛选条件是索引列之一

Using temporary:

创建了临时表用来存储结果,排序或者分组的情况下

Using filesort:

表示没有使用索引的排序

相关推荐
国服第二切图仔1 小时前
Rust开发实战之操作SQLite数据库——从零构建数据持久化应用
数据库·rust·sqlite
安审若无5 小时前
图数据库neoj4安装部署使用
linux·运维·数据库
fenglllle5 小时前
mybatis-plus SQL 注入漏洞导致版本升级引发的问题
数据库·sql·mybatis
呆呆小金人5 小时前
SQL字段对齐:性能优化与数据准确的关键
大数据·数据仓库·sql·数据库开发·etl·etl工程师
learning-striving6 小时前
SQL server创建数据表
数据库·sql·mysql·sql server
Yeats_Liao6 小时前
时序数据库系列(三):InfluxDB数据写入Line Protocol详解
数据库·后端·时序数据库
天地之于壹炁兮6 小时前
编程I/O入门指南:核心操作全解析
数据库·windows·microsoft
切糕师学AI6 小时前
SQL中的函数索引/表达式索引
数据库·sql·mysql·postgresql·oracle
武子康6 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
S_h_a_7 小时前
八股-Mysql 基础篇(1)
数据库·mysql