我有7张桌子可供UNION使用(限制为30)
OR
我应该做7个单独的查询(限制为30)并使用PHP跟踪它们。
为什么更快?更优化?在第二种方式中,我必须同时追踪7个查询的一部分并找到我需要的前30个。
答案 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
对不起我的英文