文档章节

mysql union

t
 tystys
发布于 2017/07/24 22:22
字数 274
阅读 5
收藏 1

两种方式加速UNIONs 

1.用union all  而不是union(允许的话) 

UNION ALL is much faster than UNION

union 原理:

表一

[code]
blue
green
gray
black
[/code]

表二:

[code]
red
green
yellow
blue
[/code]

 UNION两表;

mysql首先会排序俩表数据到临时表;

 

[code]
black
blue
blue
gray
green
green
red
yellow
[/code]

然后去重

[code]
black
blue
gray
green
red
yellow
[/code]

See also: Mythical MySQL DBA – the talent drought.

 UNION ALL则是

[code]
blue
green
gray
black
red
green
yellow
blue
[/code]

不用排序|不用去重|

 .

2. Use Push-down Conditions to speedup UNION in MySQL

 表一

[code]
blue 2013
green 2013
green 2012
gray 2011
black 2009
black 2011
[/code]

表二

[code]
red 2012
red 2013
green 2011
yellow 2010
blue 2011
[/code]

查找2013年数据

[code]
(SELECT type, release FROM short_sleeve)
UNION
(SELECT type, release FROM long_sleeve);
WHERE release >=2013;
[/code]

See also: 5 More Things Deadly to Scalability and the original 5 Things Toxic to Scalability..

Here the WHERE clause works on this 11 record temp table:

[code]
black 2009
black 2011
blue 2011
blue 2013
gray 2011
green 2013
green 2012
green 2011
red 2012
red 2013
yellow 2010
[/code]

But it would be much faster to move the WHERE inside each subquery like this:

如果放进里面:速度会快很多

[code]
(SELECT type, release FROM short_sleeve WHERE release >=2013)
UNION
(SELECT type, release FROM long_sleeve WHERE release >=2013);
[/code]

 

© 著作权归作者所有

共有 人打赏支持
t
粉丝 2
博文 72
码字总数 82272
作品 0
MySQL UNION

在本教程中,我们将学习如何使用MySQL UNION操作符从多个SELECT语句将两个或多个结果集组合成一个结果集。 MySQL UNION操作符 MySQL UNION运算符允许您从多个表查询出来的两个或多个结果集组...

易百教程
2016/09/14
3
0
继续测试博客

1. 背景 全并查询结果是将多个 select 语句的查询结果合并到一起。 参与合并的结果集需要字段统一。 * 字段可以用空字符串''代替。 2. 合并查询结果实战 [ users1 and users2 ] * 查看 user...

zhangguis
2017/07/10
0
0
继续测试博客

1. 背景 全并查询结果是将多个 select 语句的查询结果合并到一起。 参与合并的结果集需要字段统一。 * 字段可以用空字符串''代替。 2. 合并查询结果实战 [ users1 and users2 ] * 查看 user...

zhangguis
2017/07/10
0
0
继续测试博客

1. 背景 全并查询结果是将多个 select 语句的查询结果合并到一起。 参与合并的结果集需要字段统一。 * 字段可以用空字符串''代替。 2. 合并查询结果实战 [ users1 and users2 ] * 查看 user...

zhangguis
2017/07/10
0
0
mysql常用命令及SQL语句

UPDATE user0 SET phone=REPLACE(phone,'13800','14400') //把phone中的13800替换为14400 select id,birth from userview WHERE birth LIKE CONCAT('%',SUBSTR(DATEFORMAT(CURRENTDATE(),'%Y......

xiejunbo
2014/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据之Linux早课9.13

1.如何判断一个Linux上的xxx服务是否存活? 2.端口号哪个命令去看看通不通? 3.那么Linux和window系统想想,都会安装telnet吗? 4.查看Linux的ip哪些途径? 5.那么对应的window的IP查看命令是什么...

hnairdb
5分钟前
0
0
http请求之 RestTemplate接口请求 总结

最近做自动化测试,使用RestTemplate调用接口,碰到了各种场景下,如: 1、灵活指定调用方式 1、什么都不带的 2、带cookie、header、其他参数的 3、需要获取返回状态码的等等,先在这稍微总结...

onedotdot
6分钟前
0
0
禁用login.salesforce.com 登录系统

在MyDomain==>设置

在山的那边
6分钟前
0
0
Nginx负载、权重、最大失败次数及时间

upstream tomcat_server_pool { ip_hash;server localhost:8082 weight=4 max_fails=2 fail_timeout=5s;server localhost:8081 weight=4 max_fails=2 fail_timeout=5s; ......

lyle_luo
15分钟前
0
0
今日学习目标

今日学习目标 : 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取文件大小的方法名称 能够说出File类判断是否是文件的方法名称 能够说出File类判断是否是文...

码农屌丝
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部