MySQL可以并行化UNION子查询(或任何东西)吗?

时间:2011-07-28 15:04:04

标签: mysql parallel-processing partitioning

我使用带有大量数据的分区表。根据MySQL文档,它在待办事项列表中:

  

涉及聚合函数(如SUM()和COUNT()的查询可以   很容易并行化。

...但是,我可以使用UNION子查询实现相同的功能吗?它们是并行化的,还是我必须创建一个多线程客户端来运行所有可能的分区键的并发查询?


修改

问题不是严格关于UNION或子查询。我想尽可能多地利用我的查询核心。有没有办法做到这一点(并确保它已完成),而不是对我的应用程序进行并列化?

有关MySQL当前并行化功能的任何好文档吗?

3 个答案:

答案 0 :(得分:5)

据我所知,目前使用多个线程/核心在应用程序中运行查询的唯一方法是使用多个连接。这当然使得无法运行属于单个事务的并行查询。

答案 1 :(得分:1)

严格来说,在一个较大的查询中UNIONed一起使用的不同查询实际上并不是子查询。

  • 查询按顺序运行
  • 列的数据类型由第一个查询
  • 确定
  • 默认情况下,删除相同的行(UNION默认为DISTINCT)
  • 在运行所有查询之前,结果集尚未完成构建

...没有办法并行化不同的查询,因为它们都是同一查询的一部分。

您可能希望尝试从代码中并行运行不同的查询,然后在查询全部完成后将结果混合在一起。

可以找到关于UNION的文档here

答案 2 :(得分:1)

我认为这里回答了类似的问题。 http://forums.mysql.com/read.php?115,84453,84453

(可能我应该将此作为评论发布,但老实说,我在这附近找不到评论按钮。)