李锋镝的博客

  • 首页
  • 时间轴
  • 留言
  • 插件
  • 左邻右舍
  • 关于我
    • 关于我
    • 另一个网站
  • 知识库
  • 赞助
Destiny
自是人生长恨水长东
  1. 首页
  2. 原创
  3. 数据库
  4. 正文

MySQL数据库查看执行计划以及名词解释

2019年9月12日 18224点热度 0人点赞 0条评论

MySQL 使用 explain + sql 语句查看 执行计划,该执行计划不一定完全正确但是可以参考。

EXPLAIN SELECT * FROM t_store WHERE sn = 1;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t_store NULL ref sn sn 767 const 1 100.00 NULL

字段释义

select_type

select_type 说明
SIMPLE 简单查询
PRIMARY 最外层查询
SUBQUERY 映射为子查询
DERIVED 子查询
UNION 联合
UNION RESULT 使用联合的结果

table

正在访问的表名

type

type 说明
ALL 全数据表扫描
INDEX 全索引表扫描
RANGE 对索引列进行范围查找
INDEX_MERGE 合并索引,使用多个单列索引搜索
REF 根据索引查找一个或多个值
EQ_REF 搜索时使用primary key 或 unique类型
CONST 常量,表最多有一个匹配行,因为仅有一行,在这行的列值可被优化器剩余部分认为是常数,const表很快,因为它们只读取一次。
SYSTEM 系统,表仅有一行(=系统表)。这是const联接类型的一个特例。

性能:

all < index < range < index_merge < ref_or_null < ref < eq_ref < system/const

性能在 range 之下基本都可以进行调优

possible_keys

可能使用的索引

key

真实使用的索引

key_len

MySQL中使用索引字节长度

rows

MySQL预估为了找到所需的行而要读取的行数

extra

extra 说明
Using index 此值表示mysql将使用覆盖索引,以避免访问表。
Using where mysql 将在存储引擎检索行后再进行过滤,许多where条件里涉及索引中的列,当(并且如果)它读取索引时,就能被存储引擎检验,因此不是所有带where子句的查询都会显示“Using where”。有时“Using where”的出现就是一个暗示:查询可受益于不同的索引。
Using temporary mysql 对查询结果排序时会使用临时表。
Using filesort mysql会对结果使用一个外部索引排序,而不是按索引次序从表里读取行。mysql有两种文件排序算法,这两种排序方式都可以在内存或者磁盘上完成,explain不会告诉你mysql将使用哪一种文件排序,也不会告诉你排序会在内存里还是磁盘上完成。
Range checked for each record(index map: N) 没有好用的索引,新的索引将在联接的每一行上重新估算,N是显示在possible_keys列中索引的位图,并且是冗余的

limit

limit 匹配后就不会继续进行扫描

索引使用

  1. 使用 like 语句时,%在右边才会使用索引
  2. or 条件中有未建立索引的列,索引失效
  3. 查询条件的字段的参数的数据类型与数据库字段的数据类型不一致
  4. !=不使用索引(如果是主键,则会走索引)
  5. >不使用索引(如果是主键或索引是整数类型,则会走索引)
  6. order by(如果 order by 是主键或索引是整数类型,则会走索引)
  7. 组合索引-遵循最左前缀
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/archives/article/database/908

相关文章

  • MySQL深度分页
  • 数据库事务的隔离级别
  • MySQL清理二进制文件
  • MySQL数据库之存储过程与存储函数
  • MySQL 中的 distinct 和 group by 哪个效率更高?
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: MySQL SQL 执行计划
最后更新:2019年9月26日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >

文章评论

1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 69 72 74 76 77 78 79 80 81 82 85 86 87 90 92 93 94 95 96 97 98 99
取消回复

秋风清,秋月明,落叶聚还散,寒鸦栖复惊。相思相见知何日?此时此夜难为情!
入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极, 早知如此绊人心,何如当初莫相识。

最新 热点 随机
最新 热点 随机
SpringBoot框架自动配置之spring.factories和AutoConfiguration.imports 应用型负载均衡(ALB)和网络型负载均衡(NLB)区别 什么是Helm? TransmittableThreadLocal介绍与使用 ReentrantLock深度解析 RedisTemplate和Redisson的区别
玩博客的人是不是越来越少了?准备入手个亚太的ECS,友友们有什么建议吗?什么是Helm?2024年11月1号 农历十月初一别再背线程池的七大参数了,现在面试官都这么问URL地址末尾加不加“/”有什么区别
妹妹的画【2019.07.09】 如何高效的学习技术? SpringBoot启动概述(SpringBoot2.1.7) 分布式事务的 N 种实现 k8s+docker部署Golang项目 《人生海海》读后感
标签聚合
教程 Spring SQL 数据库 设计模式 多线程 IDEA 架构 docker ElasticSearch SpringBoot 分布式 面试 日常 JVM Redis JAVA MySQL K8s 文学
友情链接
  • i架构
  • 临窗旋墨
  • 博友圈
  • 博客录
  • 博客星球
  • 哥斯拉
  • 志文工作室
  • 搬砖日记
  • 旋律的博客
  • 旧时繁华
  • 林羽凡
  • 知向前端
  • 蜗牛工作室
  • 集博栈
  • 韩小韩博客
  • 風の声音

COPYRIGHT © 2025 lifengdi.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Dylan

津ICP备2024022503号-3