sort buffer、内存临时表和join buffer,都是用来存放语句执行过程中的中间数据,以辅助SQL语句的执行。在排序的时候用到了sort buffer,在使用join语句的时候用到了join buffer。
union 执行流程
-
示例表
-
创建数据
执行如下SQL:
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | PRIMARY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
2 | UNION | t1 | NULL | index | NULL | PRIMARY | 4 | NULL | 2 | 100 | Backward index scan; Using index |
NULL | UNION RESULT | <union1,2> | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary |
这条语句用到了union,它的语义是,取这两个子查询结果的并集。重复的行只保留一行。
- key=PRIMARY,说明第二个子句用索引id。
- Extra字段,表示在对子查询的结果集做union时,使用了临时表(Using temporary)