我有7个表可以使用UNION(限制为30)进行合并
或者
我应该分别执行7个查询(限制为30),并使用PHP跟踪它们。
哪种方法更快? 更优化? 在第二种方式中,我需要同时跟踪部分7个查询,并找到我需要的前30个结果。
我有7个表可以使用UNION(限制为30)进行合并
或者
我应该分别执行7个查询(限制为30),并使用PHP跟踪它们。
哪种方法更快? 更优化? 在第二种方式中,我需要同时跟踪部分7个查询,并找到我需要的前30个结果。
选择*从(选择...从...订单...限制10) 联合所有 选择*从(选择...从...订单...限制10) 按...顺序排序限制10据我所知(在具有5000万行的DB上进行了检查)-比不使用派生查询更快。
在做决策之前,您至少需要使用MySql的EXPLAIN运行这两种类型的查询并分析结果。就像这样:
EXPLAIN SELECT f1, f2, f3 FROM t1
UNION ALL
SELECT f1, f2, f3 FROM t2;
这取决于每个查询是否产生唯一的结果,使用 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
抱歉我的英语不好
UNION
会隐式地去重。如果不需要去重,请使用UNION ALL
。 - Code Magician