mysql explain执行计划详解

EXPLAIN是一个用于分析SQL执行计划的神器。
坦率地说,这只是取决于 MySQL 是如何工作的。

首先处理 ID 列中的数字。
数字的顺序相同。
NULL 表示结果集被忽略。

select_type 指的是请求类型。
最简单的就是最简单的。
Union 是 UNION 内部的一个问题。

表列显示指定表的名称。
临时表用尖括号括起来。

列类型是一种访问类型。
系统非常好。
这一切都是最糟糕的。
除所有例外情况外,都可以使用索引。

possible_keys是一个可以使用的索引。
最主要的是它被正确使用。

key_len 是索引的长度。
越短越好。

参考是相关领域。
func 是函数转换。

rows 是扫描的行数。
越少越好。

这是更多信息。
使用索引就是直接使用索引。
usingfilesort表示不进行指针排序。

过滤器是过滤器的比率。
越高越好。
这是第一个。
您还有什么疑问吗?

MySQL多表查询与左连接、右连接、内连接、全连接

老实说,在数据库中并不是所有的数据都可以放在一张表中。
如果一个表太多,数据就会很乱,查找也会很慢。
因此,将它们拆分为多个表并使用联接来查询它们是标准操作。

内连接用得最多,存在的是两个表中的数据。
例如,查看学生和成绩时,成绩表中没有成绩的学生将不可见。
这是最简单的连接。

对于左侧参与,需要左侧所有表(例如学生表)。
如果右侧的表格(例如成绩表)存在,则会显示出来。
如果没有,则将填零。
就像检查所有学生一样,没有成绩的学生也会显示出来,成绩栏为空。

右连接 相反,需要右边的所有表。
如果左侧的表存在,则会显示该表。
否则将填零。
这是很少使用的。

MySQL不直接支持完全参与。
您需要使用两个左连接并添加一个并集来实现它。
即在两个表中查找所有可能的数据,如果一个表中没有匹配,则使用零作为占位符。

还有一个交叉连接。
这是最简单的。
它将一个表中的每条数据与另一表中的每条数据组合起来。
例如,对于学生和科目,交叉链接意味着所有学生被分配到所有科目,并且组合是每个学生和每个科目的假设数据。

使用别名创建别名非常重要。
当表名和字段名相同时,必须用别名分隔。
例如,使用stu代替student,使用c代替course。

MySQL连接,内连接可以放在表的两边,结果是一样的。
但是无论左连接和右连接放在左边还是右边,结果都会改变。
左表中的数据在右链接中,顺序相反。

经过多次使用后,最后的连接就会习惯它们。
内连接检查交集,左连接检查所​​有左表,右连接检查所​​有右表,全连接检查所​​有组合,交叉连接检查所​​有组合。

数据来源是一组经典的学生点。
练习5 0题后你就会熟悉了。