mysql执行计划id为空—UNION关键字
简介
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。例如,我有两个表,表1记录的是公司男员工的数据,包括年龄、姓名、职位。表2记录的是公司女员工的数据,包括姓名、家庭住址、手机号等字段。这时,我们想要根据一定条件,查询两个表的姓名的集合。就会用到 UNION 关键字。
UNION 可以查询多个字段,不过 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
语法
- SELECT column_name(s) FROM table_name1
- UNION
- SELECT column_name(s) FROM table_name2
UNION 操作符会对结果集进行去重。如果允许重复值,可以用 UNION ALL 两者除去重功能外,没有其他区别。
实例
这里的实例,就以简介里的介绍为需求,建立两个表格,并且进行相应的操作。
首先,建立user1,user2 两个表格,建表语句如下:
- -- 建表语句
- CREATE TABLE user1 (
- id INT,
- age INT,
- NAME VARCHAR (5),
- position VARCHAR (8)
- );
- CREATE TABLE user2 (
- id INT,
- name VARCHAR(5),
- address VARCHAR(50),
- phone_number VARCHAR(20)
- )
CREATE TABLE
其次,插入对应数据,sql如下:
- -- 数据插入语句
- INSERT INTO user1
- VALUES
- (
- 1,
- 20,
- '张三',
- '技术主管'
- );
- INSERT INTO user1
- VALUES
- (
- 2,
- 20,
- '李四',
- '产品主管'
- );
- INSERT INTO user1
- VALUES
- (
- 3,
- 20,
- '王五',
- '运营主管'
- );
- INSERT INTO user1
- VALUES
- (
- 4,
- 20,
- '赵六',
- '后勤主管'
- ) INSERT INTO user2 (
- id,
- NAME,
- address,
- phone_number
- )
- VALUES
- (
- 1,
- '珍珍',
- '北京',
- ''
- );
- INSERT INTO user2 (
- id,
- NAME,
- address,
- phone_number
- )
- VALUES
- (
- 2,
- '莲莲',
- '上海',
- ''
- );
- INSERT INTO user2 (
- id,
- NAME,
- address,
- phone_number
- )
- VALUES
- (
- 3,
- '爱爱',
- '深圳',
- ''
- );
INSERT
最后,运行UNION语句,进行查询
- -- UNION 语句
- SELECT NAME FROM user1
- UNION
- SELECT name FROM user2
UNION
代码执行后,得到结果如下:
这里的结果集中的列名为UNION语句的第一个select语句的列名(user1 为NAME ,user2 为name)。
explain的时候,id为null
在执行UNION的执行计划的时候,最后一个合并结果集的操作的执行id为null。而且,第一个执行的select_type为简单查询,第二个及以后的查询为UNION,最后合并时的select_type为UNION RESULT。
执行计划代码如下:
- EXPLAIN SELECT NAME FROM user1
- UNION
- SELECT name FROM user2
EXPLAIN UNION
结果如下:
mysql执行计划id为空—UNION关键字的更多相关文章
- Mysql执行计划说明
Mysql执行计划翻译: 官网原文请见http://dev.mysql.com/doc/refman/5.6/en/explain-output.html:5.6 EXPLAIN语句提供有关SELEC ...
- 如何查看MySQL执行计划
在介绍怎么查看MySQL执行计划前,我们先来看个后面会提到的名词解释: 覆盖索引: MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引 ...
- MySQL执行计划 EXPLAIN参数
MySQL执行计划参数详解 转http://www.jianshu.com/p/7134286b3a09 MySQL数据库中,在SELECT查询语句前边加上“EXPLAIN”或者“DESC”关键字,即 ...
- 查看Mysql执行计划
使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择 ...
- MySQL执行计划复习
MySQL执行计划分析 Ⅰ.认识执行计划的每个字段 (root@localhost) [(none)]> desc select 1; +----+-------------+-------+- ...
- mysql执行计划常用说明
MYSQL执行计划顺序原则上是:在所有组中,id值越大,优先级越高,越先执行,id如果相同,可以认为是一组,从上往下顺序执行做执行计划之前,要了解下表统计信息情况:mysql.innodb_table ...
- 读懂MySQL执行计划
原文:https://mp.weixin.qq.com/s/-BlLvBKcF-yalELY7XkqaQ 前言 在之前的面试过程中,问到执行计划,有很多童鞋不知道是什么?甚至将执行计划与执行时间认为是 ...
- MySQL执行计划的讲解
最近同事在执行线上执行一条MySQL的查询语句,数据的话在9000条左右,但使用左连接的时候查询速度大概在15秒左右~这速度确实是无法接受的~ 经过简单的修改,变为内连接的话,执行速度不到1秒. 下面 ...
- MySQL 执行计划详解
我们经常使用 MySQL 的执行计划来查看 SQL 语句的执行效率,接下来分析执行计划的各个显示内容. EXPLAIN SELECT * FROM users WHERE id IN (SELECT ...
随机推荐
- 关于微信内置浏览器在ios上播放提示音的经验分享
document.addEventListener("WeixinJSBridgeReady", function () { window.audio= new Audio() w ...
- https://www.oschina.net/project/lang/19/java
https://www.oschina.net/project/lang/19/java
- H5判断手机是否存在应用和打开应用
伪命题,其实js无法判断您的手机是否存在此应用,遇到这样的需求我们应该跟ios和Android开发的同事商量,需要他们给你一个url尝试打开,如果能打开就表示手机中有该应用,如果不能打开就表示手机没有 ...
- (python基础 函数)
关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值.使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值 必需参数:必 ...
- PG数据库中用户权限
每当在数据库中创建一个对象,所有者可以分配它访问权限.所有者通常是执行创建语句的用户.对于大多数类型的对象,初始状态是,只有所有者(或超级用户)可以修改或删除对象.为了让其他角色或用户使用它,特权或权 ...
- PHP+Ajax判断是否有敏感词汇
本文讲述如何使用PHP和Ajax创建一个过滤敏感词汇的方法,判断是否有敏感词汇. 敏感词汇数组sensitive.php return array ( 0 => '111111', 1 => ...
- 关联tomcat源代码
1.进入tomcat官网下载对应版本源代码文件 2. 3..ctrl+鼠标左键 点击Cookie对象 4. 5.
- maven repository pom
场景: 如果maven setting.xml 中没指定国内的镜像 可以通过在项目中的pom中指定 指定repository : <properties> <java.version ...
- shell脚本中获取当前所在目录地址
shell脚本中获取当前所在目录如下 #!/bin/bash work_path=$() cd ${work_path} work_path=$(pwd) cd ${work_path}/src
- Never Wait for Weights(带权并查集+路径压缩)
题目链接:http://acm.sdibt.edu.cn/vjudge/contest/view.action?cid=2209#problem/F !a b w 表示b比a大w ? a b 输出 ...