文档章节

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 user_0 SET phone=REPLACE(phone,'13800','14400') //把phone中的13800替换为14400 select id,birth from userview WHERE birth LIKE CONCAT('%',SUBSTR(DATEFORMAT(CURRENT_DATE(),......

xiejunbo
2014/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
5
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
24
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
18
0
my.ini

1

architect刘源源
今天
16
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部