Select_type 字段
Select_type 字段说明
Select_type字段 | 意义 |
---|---|
SIMPLE | 简单SELECT,不使用UNION或子查询等 |
PRIMARY | 子查询中最外层查询,查询中若包含子查询,最外层的SELECT被标记为PRIMARY |
UNION | UNION中的第二个或后面的SELECT语句 |
DEPENDENT UNION | UNION中的第二个或后面的SELECT语句 |
UNION RESULT | UNION的结果 |
SUBQUERY | 子查询中的第一个SELECT,结果不依赖于外部查询 |
DEPENDENT SUBQUERY | 子查询中的第一个SELECT,依赖于外部查询 |
DERIVED | 派生表的SELECT, FROM子句的子查询 |
UNCACHEABLE SUBQUERY |
一个子查询的结果不能被缓存,必须重新评估外链接的第一行 |
- SIMPLE 类型。
简单 SELECT,不使用 UNION 或子查询等。
EXPLAIN SELECT subject.*
FROM subject
LIMIT 2;
- PRIMARY 类型。
EXPLAIN SELECT score.*
FROM student_score score
WHERE subject_id = (
SELECT id
FROM subject
WHERE teacher_id = (
SELECT id
FROM teacher
WHERE id = 2
)
);
查询中若包含任何复杂的子部分,最外层查询则被标记为主查询。
- SUBQUERY 类型。
EXPLAIN SELECT score.*
FROM student_score score
WHERE subject_id = (
SELECT id
FROM subject
WHERE teacher_id = (
SELECT id
FROM teacher
WHERE id = 2
)
);
在 select 或 where 中包含子查询。
- UNION 类型。
EXPLAIN SELECT subject.*
FROM subject
LEFT JOIN teacher ON subject.teacher_id = teacher.id
UNION
SELECT subject.*
FROM subject
RIGHT JOIN teacher ON subject.teacher_id = teacher.id;
若第二个 select 出现在 uion 之后,则被标记为 UNION。
- UNION RESULT 类型。
EXPLAIN SELECT subject.*
FROM subject
LEFT JOIN teacher ON subject.teacher_id = teacher.id
UNION
SELECT subject.*
FROM subject
RIGHT JOIN teacher ON subject.teacher_id = teacher.id;
从 UNION 表获取结果的 select。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。