MySQL中EXPLAIN解释命令及用法示例分析

分类:编程技术 时间:2024-02-20 15:27 浏览:0 评论:0
0
本文将详细讲解MySQL中EXPLAIN解释命令及用法的实例分析。小编觉得还是比较实用的,所以分享给大家,作为参考。希望您读完本文后有所收获。

1.场景描述:同事教我如何在mysql中使用explain,于是我查看了返回内容的含义。

2.现将有用的内容记录如下:

1、explain展示了mysql如何使用索引来处理select语句和join表。它可以帮助选择更好的索引并编写更优化的查询语句。

要使用,只需在 select 语句前添加说明即可:

explain select count(DISTINCT uc_userid) as user_login from user_char_daily_gameapp_11 where uc_date > = "2017 -09-04" and uc_date<="2017-09-08" AND uc_date >= "2017-06-01" LIMIT 1

2、EXPLAIN列的解释:

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

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

possible_keys:显示可能应用于此表的索引。如果为空,则不可能有索引。您可以从相关域的WHERE语句中选择合适的语句

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

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

ref:显示使用索引的哪一列,如果可能的话,使用常量

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

Extra:有关MYSQ如何进行的额外信息L 解析查询。将在表4.3中讨论,但是这里可以看到的不好的例子是Usingtemporary和Usingfilesort,这意味着MYSQL根本无法使用索引,结果就是检索会非常慢

< p>3、extra column返回描述的含义

Distinct:一旦MYSQL找到与行并集匹配的行,就不再搜索

不存在:MYSQL优化的LEFT JOIN,一旦找到符合LEFT JOIN条件的行,就不再搜索

每条记录检查的范围(索引图:#) :没有找到理想的索引,因此对于前一个表中的每个行组合,MYSQL 检查使用了哪个索引并使用它从表中返回行。这是使用索引最慢的连接之一

使用文件排序:当您看到此情况时,查询需要优化。 MYSQL 需要额外的步骤来发现如何对返回的行进行排序。它根据连接对所有行进行排序on类型和

存储排序键值和匹配条件的行指针

使用索引:列数据是从刚刚使用的信息中获取的返回索引而不读取实际操作。当表的所有请求列都属于同一索引时,就会发生这种情况

使用临时查看此时,需要优化查询。这里,MYSQL需要创建一个临时表来存储结果。这种情况通常发生在对不同列集执行 ORDER BY 而不是 GROUP BY 时。

Where 使用时使用 WHERE 子句来限制哪些行将与下一个表匹配或返回给用户。如果您不想返回表中的所有行并且联接类型为

ALL 或索引,或者查询存在问题,则可能会发生这种情况。不同连接类型的说明(按效率排序)

系统表只有一行:系统表。这是 const connectio 的特例n type

const:表中能够匹配本次查询的记录的最大值(索引可以是主键,也可以是唯一索引)。因为只有一行,所以这个值实际上是一个常量,因为

MYSQL先读取这个值,然后把它当作常量

eq_ref:在连接中、MYSQL在查询时,从上一张表中,每条记录并集从表中读取一条记录,当查询使用索引作为主键或者只有一个键时使用。

一个键

ref:仅当查询使用的键不是唯一键或主键,或者是这些类型之一的一部分(例如,使用最左边的前缀)时,才会出现此连接类型。对于前一个表的每个行连接,将从表中读取所有记录。此类型在很大程度上依赖于基于索引匹配的记录数量 - 越少越好

范围:此连接类型使用索引返回一系列行,就像使用 > 或<找东西案例

index:该连接类型对上表中的每条记录执行全扫描(比ALL好,因为索引一般小于表数据)

ALL :此连接类型对每个先前记录执行完整扫描。这一般是不好的,应该尽量避免

关于《MySQL中的EXPLAIN解释命令及用法》这篇文章就分享到这里。希望以上内容能够对大家有所帮助,让大家能够学到更多的知识。如果您觉得文章不错,请转发出去,让更多的人看到。 。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > MySQL中EXPLAIN解释命令及用法示例分析

用户评论