两种方式加速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]
转载于:https://my.oschina.net/u/3255899/blog/1486580
分享到:
相关推荐
MySQL UNION 与 UNION ALL 语法与用法 MySQL UNION 语法用于把来自多个 SELECT 语句的结果组合到一个结果集合中。其语法格式为:SELECT column,... FROM table1 UNION[ALL] SELECT column,... FROM table2...其中,...
本文实例讲述了MySQL Union合并查询数据及表别名、字段别名用法。分享给大家供大家参考,具体如下: union关键字 SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION ALL SELECT s_id, f_name...
在MySQL数据库中,进行数据查询时,我们经常需要使用到`OR`、`IN`和`UNION ALL`这些操作符。这些操作符在不同的场景下有不同的效率表现,但并不是像网络上普遍认为的那样,`UNION ALL`总是比`OR`和`IN`更快。实际上...
MySQL中的`UNION`和`UNION ALL`是两种用于合并多个查询结果集的方法,它们在处理数据并集时有着显著的区别。 1. **UNION**: `UNION` 操作符用于合并两个或更多`SELECT`语句的结果集,并自动去除重复行。在执行`...
union 是对数据进行并集操作,不包括重复行,同时进行默认排序Union all 是对数据进行并集操作,包括重复行,不进行排序举例说明: 创建数据库表: CREATE TABLE `t_demo` ( `id` int(32) NOT NULL, `name` ...
MySQL的UNION操作符是用来合并两个或多个SELECT语句的结果集,形成一个新的单一结果集。在MySQL中,UNION主要用于合并具有相同列数和数据类型的查询结果,它可以帮助你从不同的表或者不同的查询条件中获取汇总的数据...
MySQL UNION 操作符是SQL语言中的一个重要组成部分,它允许用户将多个SELECT语句的结果合并成一个单一的结果集。这个操作符常用于当你需要从不同的数据源或者不同的查询条件中汇总数据时。在本教程中,我们将深入...
MySQL UNION 操作符是数据库查询中的一个重要工具,它允许你将多个 SELECT 语句的结果合并成一个单一的结果集。在数据库管理和数据分析时,这非常有用,尤其是当你需要整合来自不同表或不同查询的信息时。 **UNION ...
在MySQL中,`UNION ALL` 用于合并多个`SELECT`语句的结果集,而这里的重点是如何在合并结果后进行排序。在给定的场景中,我们有一个文章数据表,其中文章的状态通过`PROMOTE_STATUS`字段表示,分别对应0(待发布)、...
在MySQL数据库中,`UNION` 是一种用于合并多个`SELECT`语句结果集的工具。这个操作的主要目的是将不同的查询结果集拼接在一起,形成一个新的结果集,它有效地消除了重复行。在本例中,我们将深入探讨`UNION`的使用、...
本文详细介绍了Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下
在MySQL中,`UNION` 操作符用于合并多个 `SELECT` 语句的结果集,它会自动去除重复的行。然而,当你试图在 `UNION` 后直接使用 `ORDER BY` 对合并后的结果进行排序时,会出现错误,因为MySQL解析器期待的是一个单独...
总结以上内容,本文主要讲述了MySQL中UNION ALL用法的基本概念、在不同版本的MySQL中UNION ALL的性能差异,以及如何通过理解执行计划来优化数据库操作。此外,还提到了与MariaDB的对比以及OCR扫描技术可能带来的问题...