SQL中EXPLAIN语法怎么用

40次阅读
没有评论

共计 1561 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章给大家分享的是有关 SQL 中 EXPLAIN 语法怎么用的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

possible_keys:possible_keys 列指出 MySQL 能使用哪个索引在该表中找到行。注意,该列完全独立于 EXPLAIN 输出所示的表的次序。这意味着在 possible_keys 中的某些键实际上不能按生成的表次序使用。

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

key_len:key_len 列显示 MySQL 决定使用的键长度。如果键是 NULL,则长度为 NULL。注意通过 key_len 值我们可以确定 MySQL 将实际使用一个多部关键字的几个部分。

ref:ref 列显示使用哪个列或常数与 key 一起从表中选择行。

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

Extra:该列包含 MySQL 解决查询的详细信息。

Distinct:MySQL 发现第 1 个匹配行后,停止为当前的行组合搜索更多的行。

Not exists:MySQL 能够对查询进行 LEFT JOIN 优化,发现 1 个匹配 LEFT JOIN 标准的行后,不再为前面的的行组合在该表内检查更多的行。

range checked for each record (index map: #):MySQL 没有发现好的可以使用的索引,但发现如果来自前面的表的列值已知,可能部分索引可以使用。对前面的表的每个行组合,MySQL 检查是否可以使用 range 或 index_merge 访问方法来索取行。

Using filesort:MySQL 需要额外的一次传递,以找出如何按排序顺序检索行。通过根据联接类型浏览所有行并为所有匹配 WHERE 子句的行保存排序关键字和行的指针来完成排序。然后关键字被排序,并按排序顺序检索行。

Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。当查询只使用作为单一索引一部分的列时,可以使用该策略。

Using temporary:为了解决查询,MySQL 需要创建一个临时表来容纳结果。典型情况如查询包含可以按不同情况列出列的 GROUP BY 和 ORDER BY 子句时。

Using where:WHERE 子句用于限制哪一个行匹配下一个表或发送到客户。除非你专门从表中索取或检查所有行,如果 Extra 值不为 Using where 并且表联接类型为 ALL 或 index,查询可能会有一些错误。

Using sort_union(…), Using union(…), Using intersect(…):这些函数说明如何为 index_merge 联接类型合并索引扫描。

Using index for group-by:类似于访问表的 Using index 方式,Using index for group-by 表示 MySQL 发现了一个索引,可以用来查询 GROUP BY 或 DISTINCT 查询的所有列,而不要额外搜索硬盘访问实际的表。并且,按最有效的方式使用索引,以便对于每个组,只读取少量索引条目。

通过相乘 EXPLAIN 输出的 rows 列的所有值,你能得到一个关于一个联接如何的提示。这应该粗略地告诉你 MySQL 必须检查多少行以执行查询。当你使用 max_join_size 变量限制查询时,也用这个乘积来确定执行哪个多表 SELECT 语句。

感谢各位的阅读!关于“SQL 中 EXPLAIN 语法怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-26发表,共计1561字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)