网站运营 | 站长学院 | 技术文档 | 成语 | 歇后语 | 桌面壁纸 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论

MySQL中EXPLAIN详解

【 更新时间:2013-07-17 | 字体:
[导读]explain显示了mysql如何使用索引来处理select语句以及连接表??梢园镏≡窀玫乃饕托闯龈呕牟檠锞?>>。使用方法,在select语句前加上explain就可以了:如:explain select surname,first_name form a,b wher...

explain显示了mysql如何使用索引来处理select语句以及连接表>>?>>?梢园镏≡窀玫乃饕托闯龈呕牟檠锞?。

使用方法>,在select语句前加上explain就可以了:

如:explain select username,first_name form hx,itlearner where a.id=b.id

EXPLAIN列的解释:

id:本次 select 的标识符。在查询中每个 select都有一个顺序的数值。

select_type :查询类型>,比较多的是simple,简单查询

table:显示这一行的数据是关于哪张表的

type:这是重要的列>>,显示连接使用了何种类型。从最好到最差的连接类型为const>、eq_reg、ref>>、range>、indexhe和ALL

possible_keys:显示可能应用在这张表中的索引>。如果为空,没有可能的索引>??梢晕喙氐挠虼覹HERE语句中选择一个合适的语句

key: 实际使用的索引>。如果为NULL>,则没有使用索引>>。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引

key_len:使用的索引的长度>。在不损失精确性的情况下>,长度越短越好

ref:显示索引的哪一列被使用了>,如果可能的话,是一个常数

rows:MYSQL认为必须检查的用来返回请求数据的行数

Extra:关于MYSQL如何解析查询的额外信息>。最坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢>>。

select_type详解:

simple: 简单的 select (没有使用 union或子查询)
primary: 最外层的 select。
union: 第二层>,在select 之后使用了 union>。
dependent union: union 语句中的第二个select,依赖于外部子查询
subquery: 子查询中的第一个 select
dependent subquery: 子查询中的第一个 subquery依赖于外部的子查询
derived: 派生表 select(from子句中的子查询)

type类型详解

system 表只有一行:system表>。这是const连接类型的特殊情况

const:表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)>。因为只有一行,这个值实际就是常数>,因为MYSQL先读这个值然后把它当做常数来对待

eq_ref:在连接中>,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录>,它在查询使用了索引为主键或惟一键的全部时使用

ref:这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如>,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好

range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况

index: 这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好>>>,因为索引一般小于表数据)

ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免

extra列返回的描述的意义

Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行>>,就不再搜索了

Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引>,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort: 看到这个的时候>,查询就需要优化了>。MYSQL需要进行额外的步骤来发现如何对返回的行排序>。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行

Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

Using temporary 看到这个的时候>>,查询需要优化了。这里>,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户>>。如果不想返回表中的全部行,并且连接类型ALL或index>,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)

 

友荐云推荐
  • 转载请注明来源:网站运营 网址:http://www.chinawobo.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站>,我们表示深深的谢意>>。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
RSS订阅
  • QQ邮箱
  • 填写您的邮件地址,订阅我们的精彩内容:
更多
© 2014 网站运营 - T086.com(原itlearner.com)
  • 歹徒抢劫超市前请人占卜 梦到头发着火代表会有钱? 2018-05-27
  • 薪资倒退至17年前水平 台北网友叹买房困难 2018-05-27
  • 四川馆藏国家重点档案195万余卷 2018-05-27
  • 张天爱变胖了?淡雅甜笑险露双下巴 2018-05-26
  • 论对汉文化东传的基本认识 2018-05-26
  • 4月台州全市新建商品住宅成交3444套 2018-05-25
  • 河北盐山:“点、线、面”结合推进人才强县 2018-05-25
  • 北京市幼儿园年内完成全员培训 2018-05-25
  • 河南职业技术学院全国技能(导游类)大赛获佳绩 2018-05-24
  • Футбол -- Арены ЧМ-2018 -- Стадион Нижний Новгород 2018-05-24
  • 美媒:美国对华战略缺乏头脑 2018-05-23
  • 中国钢企布局沿海 柳钢瞄准东盟经济圈 2018-05-23
  • 2018的偶像元年是否只是一场美丽的谎言?偶像练习生创造101选秀 2018-05-22
  • 上海临港有个“儿童大学” 2018-05-20
  • 2017年世界大学学术排名发布 清华进前50大学学术排名大学排行榜 2018-05-20
  • 微商货源 | 冠珠陶瓷 | 6688电视家官网 | 中康体检网 | 安徽极热网 | 北京赛车开奖号码 | 快猴网 | 迪威乐云商devmsn | 易奇八字 | wwe美国职业摔角 | 八字算命 | 河南旅游景点大全 | 冠珠陶瓷 | 广东旅游景点大全 |
    RunTime:5.52ms QueryTime:7