欢迎光临散文网 会员登陆 & 注册

MySQL Explain 执行计划详解、写高效SQL、灵活使用索引(实战)

2023-02-15 14:41 作者:仲夏七月梦  | 我要投稿
  • MySQL的Explain执行计划属性:

  • id:数值表示select语句的执行顺序,大的先执行
  • select_type
  • simple:无子查询和join关键字
  • primary:复杂查询最外层语句或union最左的select
  • subquery:仅限于from前面的select语句
  • derived:可包含from后面的查询,且将中间结果存放到临时表中
  • union
  • table 表名
  • type列(执行效率依次递减)
  • null:解析SQL时就能完成,不需要查找表或索引
  • system
  • const:where id = 1这种
  • eq_ref:主键索引或唯一索引与其他字段的关联查询,最多只返回一条记录,on xx.id = xxx.id
  • ref:普通索引
  • range:范围查询,where id>3这种
  • index:按所有索引查找
  • all:没有索引因此需要全表查询
  • possible_keys:可能使用到的索引,需要视key而定。若possible_key列有值但key为null,则说明该索引对本次查询无效,进而进行全表扫描;如果都为null,则表示没有相关索引,可以视情况创建索引。
  • key
  • key_len:适用于联合索引时确定哪些索引生效
  • ref
  • rows:预估要读取的行数,不是结果集的行数
  • extra
  • using index:判断该字段是否添加索引,有则覆盖伪索引
  • using where:where后面没用到索引,可考虑添加索引
  • using index condition:前导列。where id =1 and id>3
  • using temporary:生成了需要被优化的中间表
  • using filesort:数据没通过索引排序,若量小则排在内存中,否则放到磁盘中去排序
  • select table optimized:直接从表信息就可以获得结果,不必查表和走索引。举例:type字段里属性为null的情况


MySQL Explain 执行计划详解、写高效SQL、灵活使用索引(实战)的评论 (共 条)

分享到微博请遵守国家法律