mysql explain的用法

   如果在SELECT语句前放上关键词EXPLAINMySQL将解释它如何处理SELECT,提供有关表如何联接和联接的次序。

EXPLAIN的每个输出行提供一个表的相关信息,并且每个行包括下面的列:

1.id   SELECT识别符。这是SELECT的查询序列号。

2.select_type 可以为一下任何一种类型

SIMPLE  简单SELECT(不使用UNION或子查询)

PRIMARY   最外面的SELECT

UNION    UNION中的第二个或后面的SELECT语句

DEPENDENT UNION  UNION中的第二个或后面的SELECT语句,取决于外面的查询

UNION RESULT  UNION的结果。

SUBQUERY 子查询中的第一个SELECT

DEPENDENT SUBQUERY  子查询中的第一个SELECT,取决于外面的查询

DERIVED    导出表的SELECT(FROM子句的子查询)

3.table  输出的行所引用的表。

4. type  联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:

system  表仅有一行(=系统表)。这是const联接类型的一个特例。

 const  表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!

eq_ref 对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUEPRIMARY KEY

ref  对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是UNIQUEPRIMARY KEY(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。

ref可以用于使用=<=>操作符的带索引的列。

 possible_keys 如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查WHERE子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询

 key   列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEXUSE INDEX或者IGNORE INDEX

5. rows  rows列显示MySQL认为它执行查询时必须检查的行数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值