UNION比运行单独的查询更快吗?

时间:2011-11-21 05:26:48

标签: php mysql sql performance union

我有7张桌子可供UNION使用(限制为30)

OR

我应该做7个单独的查询(限制为30)并使用PHP跟踪它们。

为什么更快?更优化?在第二种方式中,我必须同时追踪7个查询的一部分并找到我需要的前30个。

3 个答案:

答案 0 :(得分:3)

您的需求是什么?

正如@chris之前写的,这可能会对你有所帮助: Complex SQL (Maybe Outer Joins)

select * from (select ... from ... order ... limit 10 )
union all
select * from (select ... from ... order ... limit 10)
 order by ... limit 10

据我所知(在数据库上检查了5000万行) - 它比没有使用过的查询更好。

答案 1 :(得分:2)

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

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

答案 2 :(得分: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

对不起我的英文