栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql优化---type、key、Extra等字段含义

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql优化---type、key、Extra等字段含义

(3) type: 索引类型、类型
  • system>const>eq_ref>ref>range>index>all
    其中:system,const只是理想情况;实际能达到ref>range

system: 只有一条数据的系统表;或衍生表只有一条数据的主查询

const:仅仅能查到一条数据的SQL,用于Primary key或者unique索引

rq_ref:唯一性索引,对于每个索引键的查询,返回匹配唯一行数据(有且只有1个,不能多、不能0)
例如:select…from …where name=… 其中name必须为索引且唯一。

ref: 非唯一性索引,对于每个索引键的拆线,返回匹配的所有行(0,多)

range: 检索指定范围的行,where后面是一个范围查询(between, >, <…)
注意:in有时候会失效,从而转为无索引。

index:查询全部索引中数据

all:查询所有表中数据

(4)possible_keys:可能用到的索引,是一种预测,不准。 (5)key:实际使用到的索引 (6)key_len: 索引的长度;
  • 作用:用于判断复合索引是否被完全使用(a,b,c)。
(7)ref: 注意与type中的ref值区分。
  • 作用:指明当前表所参照的字段
(8)rows: 被索引优化查询的数据个数(通过索引查到的数据个数) (9)Extra:
  • using filesort : 性能消耗大;需要额外一次查询
    例如:explain select * from test where a1=‘’ order by a2; --using filesort小结:1. 对于单索引,如果排序和查找是同一个字段,则不会出现using filesort;如果排序和查找不是同一个字端,则会出现。 避免:where哪些字段,就order by 那些字段2. 对于复合索引,如果排序和查找的使用顺序是一致的(跨列部分索引失效,因此不算),则不会出现using filesort, 反之则会。 复合索引:不能跨列(最佳左前缀)
    避免:where和order by按照复合索引的顺序使用,不要跨列或无序使用。
  • using temporary :性能损耗大,用到了临时表,一般出现在group by语句中。
    例如:explain select * from tests03 where a2 = 2 and a4=4 group by a3
    避免:查询哪些列,就根据哪些列group by.
  • using index :性能提升;索引覆盖(覆盖索引)。只要查询的列全为索引,即可达成索引覆盖。
  • using where :需要回表查询。
    假设age为索引
    例如:explain select age, name from test03 where age = a2;
  • impossible where: where子句永远为false.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号