MySQLExplain语句

/ / MySQLExplain语句

EXPLAIN关键字用于获取有关无涯教程的SQL数据库如何在MySQL中执行查询的信息。它是DESCRIBE语句的同义词。实际上,DESCRIBE关键字提供表结构信息,而EXPLAIN关键字提供查询执行计划。它是了解和优化 MySQL 中的查询的强大工具,但开发人员很少使用它。

MySQL 8.0.19和更高版本开始,它还可以使用TABLE语句。在查询中使用此关键字时,它将处理该语句并提供有关执行计划中每个步骤的信息,例如表的连接方式,表的顺序,估计的分区等。它返回单行或多行来解释每个行执行计划的一部分和执行顺序。

假设无涯教程在示例数据库中有一个名为" student_info "和" orders "的表,该表包含以下数据:

MySQL EXPLAINMySQL EXPLAIN

如果要显示 SELECT语句的执行计划,可以使用以下查询:

mysql> EXPLAIN SELECT * FROM student_info;

输出:

该查询产生以下信息:

MySQL EXPLAIN

有时无涯教程不想扫描整个表。在这种情况下,需要使用INDEX根据指定条件查看信息。执行以下语句在student_info表中创建索引:

mysql> create index student_id_index on student_info(stud_id);

如果索引创建成功,它将产生以下输出:

MySQL EXPLAIN

现在,执行以下查询以避免对数据库进行完整的表扫描:

mysql> EXPLAIN SELECT * FROM student_info WHERE stud_id = 1;

它将产生如下图所示的输出:

MySQL EXPLAIN
EXPLAIN SELECT s. stud_name, s.phone, orders.order_date, orders.prod_name
FROM student_info AS s
JOIN orders ON (s.stud_id = orders.order_id)
WHERE s.stud_name = 'Barack';

执行后,将得到如下图所示的输出:

MySQL EXPLAIN

在上面的输出中,无涯教程可以看到两个表的select_type都是SIMPLE。两个表都遵循一对多关系。 student_info表的主键用作orders表的外键。因此,第二行的possible_keys值为order_id。对于student_info表,第一行的过滤值为12.50%,因为" Barack"是该表的第四项。对于订单表,第二行中的过滤值为100%。这是因为必须检查订单表的所有值才能检索数据。

使用UNION ALL运算符的SELECT查询中的EXPLAIN关键字

UNION ALL是一个运算符,使用SELECT查询时,它会从相关表中返回所有重复的匹配列值和重复项。下面的语句通过在student_info和orders表之间使用 UINON ALL 运算符显示EXPLAIN输出。

EXPLAIN SELECT stud_id as ID FROM student_info
UNION ALL
SELECT order_id as ID FROM orders;

它将产生以下输出,无涯教程可以看到第二行的select_type值为UNION,而Extra列的值为索引:

MySQL EXPLAIN


MySQL展开分析

它是一个用于查询的概要分析工具,它显示有关MySQL在查询执行上花费时间以及原因的信息。它将计划查询,对其进行检测并执行它,同时对行进行计数并测量在执行计划中各个点所花费的时间。执行完成后,它将打印计划和度量,而不是查询结果。

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-explain.html

来源:LearnFk无涯教程网

EXPLAIN ANALYZE SELECT s. stud_name, s.phone, orders.order_date, orders.prod_name
FROM student_info AS s
JOIN orders ON (s.stud_id = orders.order_id)
WHERE s.stud_name = 'Barack'; 

输出:

MySQL EXPLAIN

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

MCP & A2A 前沿实战 -〔黄佳〕

学透Spring:从入门到项目实战 -〔丁雪丰〕

云计算的必修小课 -〔吕蕴偲〕

说透元宇宙 -〔方军〕

Spark性能调优实战 -〔吴磊〕

体验设计案例课 -〔炒炒〕

Node.js开发实战 -〔杨浩〕

深入剖析Kubernetes -〔张磊〕

从0开始学架构 -〔李运华〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者