UNION是否比单独运行查询更快?

7

我有7个表可以使用UNION(限制为30)进行合并

或者

我应该分别执行7个查询(限制为30),并使用PHP跟踪它们。

哪种方法更快? 更优化? 在第二种方式中,我需要同时跟踪部分7个查询,并找到我需要的前30个结果。


2
更多细节会很有帮助。我是说,理论上 UNION 操作比发送多个查询要快,但只有在实际情况下 UNION 才是合适的选择。而通常情况下并不是这样的 :/ - Matchu
2
我认为这个链接会有帮助:https://dev59.com/ZUjSa4cB1Zd3GeqPI9Yb - Sudhir Bastakoti
3
请记住,UNION 会隐式地去重。如果不需要去重,请使用 UNION ALL - Code Magician
JOIN比单独查询更快,理论上是这样的。不确定UNION。但是无论理论如何,测试您的查询是最好的方法。 - PaulDecember
尝试实现这个:http://stackoverflow.com/questions/8207336/complex-sql-maybe-outer-joins - cdub
假定你的“前端”代码必须处理两个结果集而不是一个,这会增加额外的工作量。我认为,在进行有意义的比较时,你的性能测试应该包括这额外的工作量。 - onedaywhen
3个回答

4
你有什么需求?
正如@chris之前所写,这可能会帮助你: 复杂SQL(可能是外连接)
选择*从(选择...从...订单...限制10)
联合所有
选择*从(选择...从...订单...限制10)
按...顺序排序限制10
据我所知(在具有5000万行的DB上进行了检查)-比不使用派生查询更快。

3

在做决策之前,您至少需要使用MySql的EXPLAIN运行这两种类型的查询并分析结果。就像这样:

EXPLAIN SELECT f1, f2, f3 FROM t1
    UNION ALL
       SELECT f1, f2, f3 FROM t2;

0

这取决于每个查询是否产生唯一的结果,使用 UNION ALL 可以节省服务器请求次数,并且可以在联合操作后对结果进行排序。例如:

 select column1 alias1, column2 alias2, from table x where ... 
  UNION ALL
  select column3 alias1, column2 alias2 from table y where ...
  ...
  order by 1

抱歉我的英语不好


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接